【发布时间】:2019-04-07 22:54:20
【问题描述】:
目前正在进行一个小组项目,我一直在查看小组编写的代码,我很好奇是否有更好的方法将道具传递给改变顶级 App 组件状态的 n 个子组件。
目前我们有这样的东西:
return (
<div>
<header className="navBar">
// NavBar is an example for the question
<NavBar
showSplash={this.state.showSplash}
displayAllSearchResults={this.displayAllSearchResults}
searchBarDisplay={this.state.showCard}
updateResults={this.updateResults}
selectResult={this.selectResult}
searchResults={this.state.searchResults}
showSuggestions={this.state.showSuggestions}
/>
</header>
<section className="App">
<article className="mainContent">{card}</article>
</section>
<div className="appBackground" />
</div>
);
所有这些方法(可能太多)都被传递到 NavBar 组件中,该组件本身由 SearchBar 组件组成,该组件还需要传递给它的巨大块以更改所有状态回到顶级App的路。这感觉错了,有没有解决方案或更好的方法来传递所有这些道具?
【问题讨论】:
-
在我的项目中,我会传递道具,正如 Abdelkarim 在他的回答中解释的那样,如果它只是一个孩子的孩子。如果它恰好是深度 >= 3 个孩子,那么我要么重构,要么使用 React 上下文来访问层次树中的道具。
标签: javascript reactjs