redux
仅仅是用来管理组件的状态,需要满足以下条件:
- 用户使用方式复杂
- 不同的用户、不同使用方式(普通用户和管理员);
- 多个用户之间的协作;
- 与服务器有大量的交互;
- View有多个数据源。
其他场景下,能不用redux就不用,否则增加项目的复杂度。
三大特征:
- 单一的数据源,整个应用的state都存储与store对象中;
- state只读,只有触发Action(用于描述发生的事件)才能改变state;
- 使用纯函数(函数的返回值只能依赖于它的参数,相同的输入,只能得到相同的结果)执行修改。
由三个部分构成:
- Action,描述事件,是信息的载体
- Reducer,定义事件,规定整个应用的状态如何改变,根据Action更新Store中的状态
- Store,存储整个应用的状态
createStore(reducer,[preloadedState],[enhancer])
创建一个store来存放应用中所有的state,并且应用中只能有一个store。
参数reducers接受两个参数:当前的state和要执行的Action,返回新的state
Store
- getState(),获取state,
- dispatch(action),分发action,触发state变化的唯一途径
- subscribe(listener),用于注册回调,监听state变化
- replaceReducer(nextReducer),更新当前Store内的Reducer
常用getState()、dispatch(action)
combinReducers(reducers)
将多个reducer函数组合成一个reducer函数
applyMiddleware(...middlewares)
是包装了 store 的 dispatch 方法
bindActionCreates(actionCreators,dispatch)
把一个 value 为不同 action creator 的对象,转成拥有同名 key 的对象。
compose(...function)
组合组合多个函数
react-redux
<Provider store>:让组件层级中的connect()方法能够获取到Redux Store
一个容器的作用,实现store的上下文传递。
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
连接react组件和Redux