- Reducer可以接收state,但是决不能修改state;
- React组件要想改变store里的内容,先创建一个action,通过dispatch的方法将action传递给store,store将之前的数据和转发过来的action传递给reducer函数,reducer是一个函数,会把store传递过来的数据和action 做处理形成新的数据newState,reducer将新的数据newState传回给store,store再用newState替换之前的state,store一旦发生变化,react组件就会感知到store的变化,就会从store中重新取内容,更新组件的内容,页面就会重新发生变化了;
- 纯函数:给定固定的输入,就一定会有固定的输出,并且没有任何副作用;
一旦函数中有setTimeout,ajax请求,new Date()日期相关的内容时,就不是纯函数;
Reducer函数中不能有异步操作,不能有和时间相关的操作;
副作用指的是:对函数中的参数进行了修改,就会产生副作用;例如修改reducer中的
State;
CreateStore:创建一个store;
Store.dispatch():派发action,把action传递给store;
Store.getState():获取store里面所有的数据内容;
Store.subscribe():订阅store的改变,只要store发生改变,subscribe监听的回调函数就会被执行; - UI组件:页面的渲染;
容器组件:页面的逻辑; - 无状态组件:当一个普通组件只有一个render函数的时候(例如TodolistUI组件),就可以通过无状态组件来替换这个组件;
优点:性能高,因为无状态组件只是一个函数;
- Redux-thunk支持action不仅仅是对象形式,而是可以以一种函数的形式,发送给store;可以在action中写异步代码请求数据;只有使用thunk,发送的action才可以是函数形式
- Redux中间件:指action和store之间,Redux-thunk对store.dispatch进行了升级,没升级前只能接收对象式的action,升级后可以接收对象式或函数式的action;
Redux-thunk:在action里做异步操作;
Redux-logger:在派发action的时候,把action打印在控制台
Redux-saga:把异步逻辑拆分放在一个文件里管理;
- React-redux的两个API :Provider,Connect;
Provider提供器的作用:连接store,Provider中内部的组件都可以获取store里的内容;
Connect的作用:连接组件与store;
- React-redux中也有UI组件和容器组件:
UI组件就是TodoList,
容器组件就是connect方法返回的结果(connect执行生成的内容的结果);