redux进阶-怎么样在两个reducers中贡献state

对于Redux的建议结构是通过key分割state对象到不同片域,并且提供一个专门的方法去管理每一个独立的数据块,这就有点像标准的flux模式有多重的独立store,并且redux提供标准的函数 combineReducers来让你更加容易运用这个模式,然而,需要清楚的是,combineReducers并不是必要的,它更像是对于一些普遍的使用例子的一个实用函数,比如说每一个state块都有一个单独的reducer函数。

之后许多用户想要尝试在两个reducers之间共享数据,但是却发现combineReducers并不允许他们这么做,这里有几个可以使用的处理方法:

1.如果reducer需要知道数据来自另一个state块,那么整个state树的形状也许需要重组以让一个单一的reducer可以处理更多的数据。

2.你可能需要写一些定制的函数去处理这些actions,这也许需要用你自己的顶层reducer函数代替combinReducers。你也可以使用一个通用的比如说reduce-reducers去运行combineReducers处理大部分的actions,然后再运行一个更加特殊的reducer去用特殊的actions处理特殊的交叉state块。

3.异步的action creators比如说redux-thunk有权限通过getState()得到整个state。一个action creator可以从state恢复额外的数据并且把它放进action中,所以每一个reducer有足够的信息去更新它自己的state块。


通常,记住reducers仅仅是一个方法-你可以按照你自己的方法去组织和细分他们,官方也鼓励去把他们细化到更小,可以重复使用的函数中("reducer composition"),当你这么做的时候,如果子级reducer需要额外的数据去计算它自己的下一个state,你也许可以省略掉来自父级的第三个自定义层数,你仅仅需要确保他们都遵循基本的reducers贵:(state,action)=>newState,并且让state处于immutable而不是直接地去修改它

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值