Redux - Reducer 纯函数和拆分

1. Reducer的纯函数原则和时间旅行

Reducer一定要是纯函数,所谓纯函数,即就是只要函数的
调用参数相同,就永远返回相同的结果。一个纯函数,它返回的结果
往往是可以根据参数精确预测的。
要实现纯函数,只要做到:

  1. 不修改入参
  2. 不执行有副作用的操作(修改函数之外的其他变量、API调用等)
  3. 不调用其他非纯函数(Date.now())
    保证纯函数的原则,则每当我们dispatch一个相同的action,且初状态相同,则
    总是能得到一个相同的结果(状态变化),因此可以实现redux的时间旅行功能。

2. Reducer 如何进行拆分

Redux的原则之一是整个应用只有一个store,为了避免store变得十分庞大,
可以首先让需要用到redux的模块拥有自己的reducer,然后使用Redux提供的 combineReducers()
在根reducer中把这些reducers组合起来,比如:
模块detail、header等拥有自己的reducer,它处理自己的actions,在根reducer中,我们这样编写:

import { combineReducers } from 'redux-immutable'; //数据拆分
import { reducer as HeaderReducer } from '../common/header/store';
import { reducer as HomeReducer } from '../pages/home/store';
import { reducer as DetailReducer } from '../pages/detail/store';
import { reducer as LoginReducer } from '../pages/login/store';

const reducer = combineReducers({ //immutable
	header: HeaderReducer,
	home: HomeReducer,
	detail: DetailReducer,
	login: LoginReducer
});

export default reducer;

注:由于我的state均为immutable对象,所以引入了redux-immutable的combineReducers方法,如果是普通对象,
直接从redux中引入即可。然后在根store中以这个 reducer 来 createStore 即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值