单个<提供商>用于许多组件
Single <Provider> for many components
我的根组件中有以下结构
<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>
这很好,但我发现对我想传递上下文的每个组件重复<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>
但我得到了以下错误:
Failed propType: Invalid prop `children` supplied to `Provider`,
expected a single ReactElement. Check the render method of `App`.
有没有办法让我的代码更干燥,或者我不得不忍受这种冗余?
第一个变体是完全多余的。首先,Provider
存在的唯一原因是,您可以避免显式传递存储。否则,您还可以删除它,并将store
作为道具传递给容器组件本身。
Provider
的预期用例是包装最根的组件。然后,所有子女和孙辈都将隐含地收到该商店。你应该只做一次,并在里面放一个React元素。您的第二个示例不起作用,因为您在其中放置了三个元素:Topbar
、div
和Timeline
。改为包裹外层div
,它会起作用。更好的是,将Provider
移动到您调用ReactDOM.render()
的位置,并将最根的App
组件封装在其中。这样您就不需要它了。
相关文章:
- React重新渲染但未显示正确的组件
- 不能从angular2中的子组件指定父组件中的数组
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- React组件等待所需道具进行渲染
- 如何创建带有插槽的vue js组件预加载程序
- KnockoutJS-组件-多个实例
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 如何在salesforce aura闪电组件中使用jQuery.val()
- 为react组件传递道具的最佳方式
- [Vue warn]:未能解析组件
- 如何控制组件'的createContent函数被激发
- react组件中的绑定方法
- 为什么在许多浏览器中drawImage()的性能略好于createPattern()
- 单个<提供商>用于许多组件
- 在redux中的许多小型可重用reactjs组件上使用connect()是个好主意吗
- 在 constructor() 中绑定许多 React 组件方法的上下文的正确约定是什么?