Estoy dando mi primer paso en ReactJS e intento entender la comunicación entre padres e hijos. Estoy formando, así que tengo el componente para los campos de estilo. Y también tengo un componente principal que incluye el campo y verificarlo. Ejemplo:
var LoginField = React.createClass({
render: function() {
return (
<MyField icon="user_icon" placeholder="Nickname" />
);
},
check: function () {
console.log ("aakmslkanslkc");
}
})
var MyField = React.createClass({
render: function() {
...
},
handleChange: function(event) {
//call parent!
}
})
Hay alguna forma de hacerlo. ¿Y mi lógica es buena en reaccionar "mundo"? Gracias por tu tiempo.
fuente
<Child value={this.state.value} onChange={this.changeHandler.bind(this)} />
React.createClass
cual enlaza automáticamente todos los métodos de componentes. Si estaba usando las clases React es6, entonces necesitarías vincularlo (a menos que estuvieras auto-vinculante en el constructor, que es lo que mucha gente está haciendo en estos días para solucionar esto).bind
devuelve una nueva función, por lo que básicamente está creando una nueva función cada vez que ejecuta render. Probablemente esto esté bien, pero si vincula el constructor, solo lo hará una vez por método de componente en la instanciación en lugar de cada render. Es muy difícil ... ¡pero técnicamente más agradable, supongo!Puede usar cualquier método principal. Para esto, debe enviar estos métodos de su padre a su hijo como cualquier valor simple. Y puede usar muchos métodos de los padres al mismo tiempo. Por ejemplo:
Y úselo en el Niño de esta manera (para cualquier acción o en cualquier método hijo):
fuente
this.props
la devolución de llamadaundefined
.this
)Actualización de 2019 con react 16+ y ES6
Publicar esto ya que
React.createClass
está en desuso desde la versión 16 de react y el nuevo Javascript ES6 le dará más beneficios.Padre
Niño
Niño sin estado simplificado como constante ES6
fuente
Pase el método desde el
Parent
componente hacia abajo comoprop
a suChild
componente. es decir:fuente
Usando la función || componente sin estado
Componente principal
Componente hijo
fuente
Reaccionar 16+
Componente hijo
Componente principal
fuente