1. store
store保存数据,整个应用只有一个store。
Redux提供 createStore用来生成store:
import { createStore } from 'redux';
const store = createStore(fn);
2. state
store对象里包含的所有数据,
可以通过 store.getState()获取
import { createStore } from 'redux';
const store = createStore(fn);
const state = store.getState();
3.action
action是一个对象。
其中type属性是必须的,表示action的名称。
其他属性可以自由设置。
const action = {
type: 'wq',
payload: 'learn'
};
改变state的唯一方法就是使用action,它会运送数据到store。
4.store.dispatch()
store.dispatch() 是view发出action的唯一方法
import { createStore } from "redux";
const store = createStore(fn)
store.dispatch({
type: 'wq',
payload:'learn'
})
5.reducer
store 收到action后,必须给出一个新的state,view才会发生改变。(这种state的计算过程叫做reducer)。
reducer是一个函数,它接收两个参数当前state,action,返回一个新的state。
const defaultState = 0;
const reducer = (state = defaultState,action) => {
switch (action.type) {
case 'ADD':
return state + action.payload;
default:
return state;
}
}
const state = reducer (1 ,{
type:'wq',
payload:'learn'
})//haha,这是手动调用了一下reducer
实际运用中,不能像上面那样手动调用reducer,store.dispatch()会触发reducer的自动执行,但是store得先知道reducer。所以,要在生成store的时候,把reducer当作参数传进createStore方法:
const { createStore } from 'redux';
const store = createStore(reducer);
reducer是一个纯函数,同样的输入必定得到同样的输出。