React-redux
产生原因:
一个状态可能被多个组件依赖或者影响,兼顾组件之间共享状态问题和共享状态可能被任意修改的问题。
(1)避免共享状态被任意修改,产生不可预料的问题;
(2)如果要修改,必须通过允许,筛选;
(3)加入订阅模式来实施,每次修改后自动渲染;
(4)解决渲染带来的性能问题,判断一下数据的状态变更,拷贝对象,生成对象,对比对象,而后渲染;
Redux的实现:
context 比如组件树的全局变量;
dispatch,它专门负责数据的修改,只能执行某些我允许的某些修改;
createStore,专门用来专门生产这种 state 和 dispatch 的集合,内部会先初始化,然后调用一次,之后每次修改都会自动渲染页面;
reducer 是不允许有副作用的。你不能在里面操作 DOM,也不能发 Ajax 请求,更不能直接修改 state,它要做的仅仅是 —— 初始化和计算新的 state,reducer传入createStore必须符合定义。
reducer 就是用来描述数据的形态和相应的变更;
connect 结合 context 和 store;
Provider 做的事情也很简单,它就是一个容器组件,会把嵌套的内容原封不动作为自己的子组件渲染出来。它还会把外界传给它的 props.store 放到 context,这样子组件 connect 的时候都可以获取到。
dispatch,它专门负责数据的修改;action为声明;
store ,传state和dispatch的地方;
reducer,共享结构;
Provider,将外部传参放在context;
网友评论