当前位置: 首页 > news >正文

redux小结

  1. store.dispatch(action对象)

    • 在 dispatch 中调用 action 方法返回 action 对象

      // '@/actions/index.js'
      /*** Action:*    action本质上是一个 JS 对象;*    必须要包含 type 属性,否则会报错;*    只描述了有事情要发生,但并没有描述要如何更新 store 中 state*/
      const action_one = (payload) => {reurn {type:'type1', ...payload}
      }
      module.exports = {action_one,
      }
      
  2. reducer 中处理传过来的 action 并更新 store 数据

    • 通过 action 中 的 type 来在 switch 中匹配对应的逻辑处理 ↓

    • 逻辑处理完之后 return 更新最新的 store 数据 ↓

    • store.subscribe(()=>{}) 回调中就可以通过 store.getState() 取到最新的 store 数据

    // '@/reducer/index/js'
    /*** Reducer:*    本质是一个函数*    用来响应发送过来的 action*    函数接收两个参数:初始化的 state、发送过来的 action*    必须要有 return 返回值,否则 state 得不到更新后的值*      【注意】return 的对象是更新后的 store 中 state 数据*/
    const defaultState = {value: 'state初始值'
    }
    const reducer_one = (state = defaultState, action) => {switch(action.type){case 'type1':return {...state, ...action}case 'type2':return {...state, ...action}default:return state}
    }module.exports = {reducer_one,
    }
    
  3. 通过 createStore() 创建一个 store 来关联 actionreducer ,如何关联?

    • 关联 action :store.dispatch(action对象)

      import { action_one } from '@/actions/index.js'
      store.dispatch(action_one()) // 注意:此处需要调用 action 函数,要用的是返回的带有type的对象
      // action 函数调用返回action对象时,可以向action函数中传入别的数据,这样在返回action对象时将所传参数一起返回到action对象
      store.dispatch(action_one({cs:'测试'}))
      
      // 组件中展示(点击按钮前store中没有cs属性,页面展示“暂无”,点击按钮之后store中添加了cs属性,页面展示 “111”)
      import React from 'react'
      import store from '@/store/rumen'
      import { action_one } from '@/action/rumen'
      export default class Home extends React.Component {handlerClick() {// dispatchstore.dispatch(action_one({ cs: 111 }))}componentDidMount() {store.subscribe(() => {// 想要 store 中的 state 更改之后在页面进行展示,需要执行 this.setState({}) 此处不需要更改当前页面 state 传 {} 就可以this.setState({})})}render() {return (<><button onClick={this.handlerClick.bind(this)}>点击按钮</button><span>{store.getState().cs || '暂无'}</span></>)}
      }
      
    • 关联 reducer:createStore(reducer函数)

      /*** Store*    通过 createStore 来构建 Store;*    通过 subscribe 注册监听(监听 store 中 state 是否变化),组件销毁时取消监听*    通过 dispatch 发送 action* 【作用】*    将 action 与 reducer 关联在一起*/
      import { createStore } from 'redux'
      import { reducer_one } from '@/reducer/index.js'
      export default createStore(reducer_one) // 注意:需要将创建的store进行导出,别的文件才能用到
      
http://www.lryc.cn/news/45870.html

相关文章:

  • 【Python】【进阶篇】十、Pygame的Font文本和字体
  • 【从零开始学习 UVM】10.8、UVM TLM —— UVM TLM Example
  • 获取自己所上传资源的下载量
  • Aspose.cells模板导出使用记录
  • AcWing——糖果传递
  • Redis中的单线程模型
  • Python函数默认参数设置(超级详细)
  • 人工智能如何赋能业务创新?安克创新有话要说
  • 如何学习与学习的本质
  • C++ deque容器
  • HashMap的底层原理
  • Django 4.0文档学习(四)
  • 2023年全国最新高校辅导员精选真题及答案38
  • 和ChatGPT-4聊完后,我觉得一切可能已经来不及了
  • RocketMQ 5.1 NameServer 启动流程
  • 马云回国,首谈ChatGPT
  • 深入理解C++迭代器:让你的C++代码更加灵活
  • Java 读取Excel模板中的数据到实体类
  • 【java基础】Socket网络编程
  • 转发和重定向区别
  • java面试题(持续更新)
  • 【花雕学AI】09:发挥ChatGPT最大潜力——产生高质量内容的九种方法和建议
  • 实战打靶集锦-013-Loly
  • 程序员OKR学习法
  • 【从零开始学习 UVM】6.6、UVM 激励产生 —— UVM Virtual Sequence【重要】
  • 蓝桥杯:阶乘约数
  • 最大数字
  • 【java进阶08:异常】finally关键字、自定义异常类、用户业务作业、军队武器作业
  • #课程笔记# 电路与电子技术基础 课堂笔记 第6章 半导体器件的基本特性
  • skimage.filters.apply_hysteresis_threshold详解