1
我正在使用React with Meteor。我目前正在構建一個應用程序,這個應用程序已經具有相當數量的組件(一些嵌套相當深,比如5層或更多層)。在React的許多其他組件中調用組件方法的正確方法是什麼?
我經常發現自己不得不從父一路傳遞道具給孩子,只是調用組件的方法,已在最頂層父被渲染的成分,像這樣:
父文件
openDialog() {
this.setState({ open: true });
}
render() {
return (
<div>
<Dialog open={ this.state.open } />
<ChildComponent openDialog={ this.openDialog.bind(this) } />
</div>
);
}
ChildComponent
render() {
return (
<div>
<GrandChildComponent openDialog={ this.props.openDialog } />
</div>
);
}
等等,只是爲了調用最上面的父級定義的openDialog方法。
如果您只有一個分支進入更深處,此方法可行。然而,如果你說,一個可以從站點的多個不同部分觸發的登錄模式對話框(標題,邊欄,內聯鏈接等),將道具以這種方式傳遞到每個可能需要的組件中顯然是不切實際的鏈接(或不)。
什麼是正確(推薦)的方式來處理這類問題?