Q: 有多少个state
,都是存放在哪?
A:
一个页面甚至一个功能都可以拥有一个
state
,只不过给这个state叫不同的名字。所有的state
都以一个对象树的形式存储在唯一一个store
中。
Q:Redux三大原则
A:
单一数据源:整个应用的state都存在一个
object tree(store)
state
是只读的:唯一可以改变state
的是触发action
使用纯函数来执行修改: 你需要编写
reducer
来修改state
,尽量保持reducer
是纯函数
Q:dispatch()
是怎么来的?connect
是怎样连接组件和store
的?
A:
connect([mapStateToProps], [mapDispatchToProps], [mergeProps],[options])
作用:连接 React 组件与 Redux store
connect()的第一个参数mapStateToProps(Function),该参数会监听store中state的变化。只要store中的state发生变化,该回调函数就是返回一个新对象,这个对象会与组件的props合并。如果没有的话就监听不到数据的变化那页面也不会有更新。
connect()的第二个参数mapDispatchToProps(Object or Function)。<font color=red size=2.5>如果mapDispatchToProps省略的话,dispatch()会注入到组件的props中(这就是dispatch()的由来).</font> 如果是一个对象,我们需要将action和dispatch绑定并合入到props中。如果是一个函数,该函数将接受一个dispatch(),并返回一个对象,并通过bindActionCreators()将dispatch()和action绑定。
connect()将会被调用两次。第一次是设置参数,第二次是组件与 store连接,mapStateToProps 函数接收整个 store 的 state 作为 props
Q: 触发action
时,reducer
是如何触发的?
A:
store会将action和当前的state传入到reducer<font color=red size = 2.5>注意:</font>
不要在克隆state前修改它。
每个reducer只负责修改全局state中它所负责的一部分。
Q: reducer改变的state怎么反馈到store?
A :
let store = createStore(rootReducers, initialState);
Q:middleware
是什么
A:
middleware
是指可以被嵌入到框架接受请求到产生响应过程之中的代码。在redux
中指的是action
被发起之后到达reducer
之前的拓展点。