redux和react-router一起使用时怎样向子组件传递store和reducers( 二 )
■网友
provider包好以后,子组件不需要去关心reducer、action、dispatch这些东西。比如一个组件:\u0026lt;A\u0026gt;\u0026lt;B\u0026gt;\u0026lt;/B\u0026gt;\u0026lt;/A\u0026gt;,A组件是顶层组件,绑定了dispatch、storestate,现在有个需求就是B组件点击以后触发一个事件会改变state数据。一个实现就是,相关触发action并dispatch action的函数定义在A中(因为A能访问到dispatch storestate等),然后A再将这个函数作为props传递给B组件的onClick事件,这样B就和redux没有任何关系了。这样做的好处主要还在于可以重用B组件。如果把dispatch storestate传给B,那么B组件就和redux有依赖,并不是所有的地方都会用到redux。B只需要关心click以后调用哪一个onclick函数就行,而不需要去关心onclick里边的具体实现(action reducer相关)
■网友
正在学习
■网友
【redux和react-router一起使用时怎样向子组件传递store和reducers】
■网友
通过高阶组件获取
■网友
我是题主,试了一下发现react-router中也能用Provider+Connect,像下面这样//Provider包住Router,传进storerender( \u0026lt;Provider store={store}\u0026gt; \u0026lt;Router\u0026gt; \u0026lt;Route path=\u0026#39;/\u0026#39; component={App}\u0026gt; \u0026lt;Route path=\u0026#39;/section\u0026#39; component={Section}\u0026gt;\u0026lt;/Route\u0026gt; \u0026lt;/Route\u0026gt; \u0026lt;/Router\u0026gt; \u0026lt;/Provider\u0026gt;, document.getElementById(\u0026#39;root\u0026#39;))//子组件中像顶层App组件一样用connect获取todos和actionsclass Section extends Component{ sub(el){ const {actions}=this.props actions.addItem(el) } render(){ const {todos,actions}=this.props return( \u0026lt;ul\u0026gt; {todos.map(todo=\u0026gt;\u0026lt;Item todo={todo} actions={actions}/\u0026gt;)} \u0026lt;/ul\u0026gt; ) }}function mapStateToProps(state){ ...}function mapDispatchToProps(dispatch){ ...}export default connect( mapStateToProps, mapDispatchToProps)(Section)
这样的话每个子组件都要引入connect和bindActionCreators方法,并实现connect方法,会有大量重复代码。有没有一种方法可以只在顶层App组件内实现一次connect,然后通过props把todos和actions往下传递的方法呢?
推荐阅读
- 辽宁开原发生一起持刀伤人案件嫌疑人已被抓捕归案
- 浙江舟山破获一起烟草类特大非法经营案涉案1000余万元
- 装置■一天效益百万的国产装置见过没?一起去大修现场看看吧
- 合肥警方侦破一起影视投资合同诈骗案涉案金额达7800余万
- ■养宠物真可以缓解孤独吗?一起来听听“铲屎官”的心声吧!
- 程序猿和产品汪能愉快的一起谈恋爱嘛
- 曹某|
- 汽车一起看|为何说国产高端SUV三强之首是名爵HS,领克和WEY竟无法反驳?
- 一起去SUV|6万多就能买的SUV会很差吗?别傻了,这几款款款精品,配置丰富很划算!
- 轮胎|暖暖的冬日,想和这里的花儿一起怒放!