Robię pierwszy krok w ReactJS i próbuję zrozumieć komunikację między rodzicem a dziećmi. Robię formę, więc mam komponent do stylizacji pól. Mam też komponent nadrzędny, który zawiera pole i je sprawdza. Przykład:
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!
}
})
Czy jest jakiś sposób, aby to zrobić. I czy moja logika jest dobra w „świecie” reakcji? Dziękuję za Twój czas.
źródło
<Child value={this.state.value} onChange={this.changeHandler.bind(this)} />
React.createClass
który automatycznie wiąże wszystkie metody składników. Gdybym używał klas React es6, musiałbyś go powiązać (chyba że byłeś automatycznie wiązany w konstruktorze, co obecnie robi wiele osób, aby to obejść).bind
zwraca nową funkcję, więc w zasadzie tworzysz nową funkcję za każdym razem, gdy uruchamiasz render. Prawdopodobnie jest to w porządku, ale jeśli tworzysz bind w konstruktorze, robisz to tylko raz na metodę komponentu podczas tworzenia instancji, a nie przy każdym renderowaniu. To dłubie ... ale chyba technicznie ładniejsze!Możesz użyć dowolnej metody nadrzędnej. W tym celu powinieneś wysłać te metody od swojego rodzica do dziecka, jak każdą prostą wartość. Możesz jednocześnie korzystać z wielu metod od rodzica. Na przykład:
I użyj tego w Child w ten sposób (dla dowolnych działań lub jakichkolwiek metod potomnych):
źródło
this.props
w oddzwonieniu pojawia sięundefined
.this
)Aktualizacja 2019 z udziałem React 16+ i ES6
Publikowanie tego, ponieważ
React.createClass
jest przestarzałe w wersji 16, a nowy Javascript ES6 zapewni Ci więcej korzyści.Rodzic
Dziecko
Uproszczone dziecko bezpaństwowe jako stała ES6
źródło
Przekaż metodę z
Parent
komponentu w dół jako aprop
do swojegoChild
komponentu. to znaczy:źródło
Korzystanie z funkcji || składnik bezstanowy
Komponent nadrzędny
Komponent podrzędny
źródło
Reaguj 16+
Komponent podrzędny
Komponent nadrzędny
źródło