0
我想知道什麼是父子組件交互的最佳實踐,以及以下方法是否滿足良好實踐。反應 - 與子組件交互
假設我們有兩個組件:Parent
和Child
,其中Parent以類似於獲取引用元素的方式獲取Child的處理程序。
class Parent extends React.Component<{}, {}> {
private handlers: {
Child: ChildHandlers
/** And so on... **/
};
render() {
return (
<div>
<Child handlers={(handlers: ChildHandlers) => { this.handlers.Child = handlers; }} />
<button onClick={() => this.handlers.Child.toggle() /** Or change Parent.state and then trigger **/}>toggle from parent</button>
</div>
);
}
}
class Child extends React.Component<ChildProps, ChildState> {
constructor(props: ChildProps) {
super(props);
this.exposeHandlers();
}
private toggle(): void {
this.setState({ visible: !this.state.visible });
}
private exposeHandlers() {
let handlers: ChildHandlers = {
toggle:() => this.toggle()
};
this.props.handlers(handlers);
}
render() {
return (
<div>
{ this.state.visible && (
<div>
<h2>I'm being toggled!</h2>
<button onClick={() => this.toggle()} />toggle from child<button>
</div>
) }
</div>
);
}
}
這似乎是很好的,因爲:
- 它允許一致
- 這就像暴露由兩個組件使用的接口無需連接他們太多
- 它保持孩子的狀態出家長的業務在合理範圍內
- 然後添加回調到
toggle
方法在更新後對Parent執行一些操作孩子的狀態。
但是由於我沒有經歷過,有沒有(甚至是最輕微的)問題呢?
這絕對是矯枉過正 - 不知道直接訪問孩子的能力。謝謝! –