1. store

store保存数据,整个应用只有一个store。
Redux提供 createStore用来生成store:

  1. import { createStore } from 'redux';
  2. const store = createStore(fn);

2. state

store对象里包含的所有数据,
可以通过 store.getState()获取

  1. import { createStore } from 'redux';
  2. const store = createStore(fn);
  3. const state = store.getState();

3.action

action是一个对象。
其中type属性是必须的,表示action的名称。
其他属性可以自由设置。

  1. const action = {
  2. type: 'wq',
  3. payload: 'learn'
  4. };

改变state的唯一方法就是使用action,它会运送数据到store。

4.store.dispatch()

store.dispatch() 是view发出action的唯一方法

  1. import { createStore } from "redux";
  2. const store = createStore(fn)
  3. store.dispatch({
  4. type: 'wq',
  5. payload:'learn'
  6. })

5.reducer

store 收到action后,必须给出一个新的state,view才会发生改变。(这种state的计算过程叫做reducer)。
reducer是一个函数,它接收两个参数当前state,action,返回一个新的state。

  1. const defaultState = 0;
  2. const reducer = (state = defaultState,action) => {
  3. switch (action.type) {
  4. case 'ADD':
  5. return state + action.payload;
  6. default:
  7. return state;
  8. }
  9. }
  10. const state = reducer (1 ,{
  11. type:'wq',
  12. payload:'learn'
  13. })//haha,这是手动调用了一下reducer

实际运用中,不能像上面那样手动调用reducer,store.dispatch()会触发reducer的自动执行,但是store得先知道reducer。所以,要在生成store的时候,把reducer当作参数传进createStore方法:

  1. const { createStore } from 'redux';
  2. const store = createStore(reducer);

reducer是一个纯函数,同样的输入必定得到同样的输出。