Estoy a medio camino de entender cómo this.timerId no causa un error en los documentos de reacción.
class Clock extends React.Component { constructor(props) { super(props); this.state = {date: new Date()}; } componentDidMount() { this.timerID = setInterval( () => this.tick(), 1000 ); } componentWillUnmount() { clearInterval(this.timerID); } tick() { this.setState({ date: new Date() }); } render() { return ( <div> <h1>Hello, world!</h1> <h2>It is {this.state.date.toLocaleTimeString()}.</h2> </div> ); } } ReactDOM.render( <Clock />, document.getElementById('root') ); Obtengo que timerId junto con setInterval provienen de Node. Pensé que el nodo era solo el tiempo de ejecución, ¿viene con otros módulos además de los temporizadores de nodo? ¿De dónde se inicializa o se hereda timerID ? ¿Todos los objetos obtienen un timerID cuando se ejecutan en Node?
this.timerID en este caso se crea como una nueva propiedad en el punto en que se le asigna un valor, como lo señala @ luk2302 en los comentarios.
A continuación, se muestra otra forma posible de hacer referencia a una propiedad que no se creó directamente en esa clase, sino en la clase principal.
class SuperClass { constructor() { this.superProperty = "Hello I'm super!" } } class SupportClass extends SuperClass{ constructor(example) { super(); this.example = example; } supportMethod() { console.log(this.example); console.log(this.superProperty); } } let supportClass = new SupportClass("HELLO"); supportClass.supportMethod();esto produce una salida:
HELLO Hello I'm super!