Avr*_*dis 2 javascript reactjs redux
我的根组件中有以下结构
<div className={styles.main_container}>
<Provider store={store}>
<Topbar></Topbar>
</Provider>
<div className={styles.scene_and_tools}>
<Provider store={store}>
<Sidebar></Sidebar>
</Provider>
<Provider store={store}>
<Scene></Scene>
</Provider>
</div>
<Provider store={store}>
<Timeline></Timeline>
</Provider>
</div>
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我觉得有点不那么"DRY"重复<Provider>我要传递上下文的每个组件.所以我试过了
<div className={styles.main_container}>
<Provider store={store}>
<Topbar></Topbar>
<div className={styles.scene_and_tools}>
<Sidebar></Sidebar>
<Scene></Scene>
</div>
<Timeline></Timeline>
</Provider>
</div>
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Failed propType: Invalid prop `children` supplied to `Provider`,
expected a single ReactElement. Check the render method of `App`.
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的代码更干,或者我必须忍受这种冗余?
第一种变化是完全冗余的.首先Provider存在的唯一原因是,您可以避免明确地传递商店.否则你也可以将它移除并store作为支柱传递给容器组件本身.
预期的用例Provider是包装最根组件.然后所有的孩子和孙子将隐含地收到商店.你应该只做一次,并在里面放一个React元素.你的第二个例子不工作,因为你把它里面三个要素:Topbar,div和Timeline.换上外包div,它会起作用.更好的是,移动Provider到您调用的地方ReactDOM.render()并将最根本的App组件包装在其中.然后你不需要它在任何其他地方.
| 归档时间: |
|
| 查看次数: |
1035 次 |
| 最近记录: |