基本概念

  1. store
    • 存储数据的仓库
    • 使用 createStore 创建
  2. state
    • 数据的仓库当中存储的数据
    • 通过 store.getState() 获取 store 对应的快照
  3. action
    • 对象
    • 描述当前如何操作 state 对象的状态 ```jsx const addOne = { type: ‘ADD’, num: 1 }

const addTwo = { type: ‘ADD’, num: 2 }

const square = { type: ‘SQUARE’, }

  1. 4. dispatch
  2. - 唯一能更改 state 的方法
  3. - `store.dispatch(action)`
  4. 5. reducer
  5. - 函数, 用来返回一个 state
  6. - 所有 action 的行为通过 reducer 来中转
  7. ```jsx
  8. const reducer = (state = 10, action) => {
  9. switch(action.type){
  10. case 'ADD':
  11. return state + action.num;
  12. case 'SQUARE':
  13. return state ** 2;
  14. default:
  15. return state;
  16. }
  17. }

操作示例

  1. import React from "react";
  2. import ReactDOM from "react-dom";
  3. import { createStore } from "redux";
  4. const addOne = {
  5. type: "ADD",
  6. num: 1,
  7. };
  8. const addTwo = {
  9. type: "ADD",
  10. num: 2,
  11. };
  12. const square = {
  13. type: "SQUARE",
  14. };
  15. const reducer = (state = 10, action) => {
  16. switch (action.type) {
  17. case "ADD":
  18. return state + action.num;
  19. case "SQUARE":
  20. return state ** 2;
  21. default:
  22. return state;
  23. }
  24. };
  25. const store = createStore(reducer);
  26. function App() {
  27. return <div></div>;
  28. }
  29. ReactDOM.render(<App />, document.getElementById("root"));

使用 store.getState() 可以查看 state 的值

  1. console.log(store.getState()); // 10,因为在 reducer 中定义初始值

使用 store.dispatch() 更改 state 状态

  1. console.log(store.dispatch(addOne)); // {type: "ADD", num: 1} 返回 action 对象
  2. console.log(store.getState()); // 11
  3. console.log(store.dispatch(addTwo)); // {type: "ADD", num: 2} 返回 action 对象
  4. console.log(store.getState()); // 13
  5. console.log(store.dispatch(square)); // {type: "SQUARE"} 返回 action 对象
  6. console.log(store.getState()); // 169