参考阮一峰大大的文章,写的非常通俗易懂,我的偶像。
总结一下。
-
Store是保存数据的地方,整个应用只能有一个Store。Redux提供createStore这个函数,用来生成Store。
import { createStore } from 'redux';
const store = createStore(fn); -
某个时间点的数据,叫State。Store可以通过 .getState() 拿到
const state = store.getState();
Redux规定,一个State对应一个View。只要State相同,View就相同。知道State,就知道View长什么样,反之亦然。
- 如果用户操作意欲使View发生变化,View向State发出信息,告诉State要怎么改变,这个信息就叫Action。
规定Action必须是一个对象,其中必须要有一个type属性,表示Action的名称。其他属性可以自由设置。社区有一个规范可以参考。
const action = {
type: 'ADD_TODO',
payload: 'Learn Redux'
};
3.1 同一个type肯定会有不同的payload,所以可以写一个函数来生成Action,这样就不用每次还得把type写一遍,
const ADD_TODO = '添加 TODO';
function addToDo(text) {
return {
type: ADD_TODO,
text
}
}
const action = addToDo('Learn Redux'); //这个函数可以叫做 Action Creator
-
好,我们已经生成Action了,接下来要把它发给Store,规定,要用Redux给我们提供的store.dispatch()方法发送。
store.dispatch(action); // 当然也可以把Action直接写成对象或者Action Creator的形式 -
Store接收到Action之后,必须给出一个新的State,这样View才会发送变化,改变State的函数我们可以给它起个名字叫Reducer。Reducer在这里是还原剂的意思。这个函数当然是把State和Action当做参数,返回一个新State。
const reducer = function (state, action) {
// ...
return new_state;
}
网友评论