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

[redux] useDispatch的两种用法

先重写2个方法先, 方便ts类型推导,如果你看不懂为什么这么写, 先看我这篇

[redux] ts声明useSelector和useDispatch-CSDN博客

export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
export const useAppDispatch: () => AppDispatch = useDispatch;
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;

然后在组件引入

  const dispatch = useAppDispatch();

怎么用? dispatch传入的是一个action,什么action ?

通常这个 action 对象包含两个部分:

  • type:指定 action 的类型,通常是字符串。
  • payload(可选):传递给 reducer 的数据。
// 手动创建一个 action 对象
const action = { type: 'rtkSystem/signalLoss' };

// 通过 dispatch 发送 action 对象
dispatch(action);

前面写哪个切片(小仓库)哪个方法, 后面写要传的数据

例如我写

 <button
        onClick={() => dispatch({ type: 'user/changeName', payload: '饭桶' })}
      >
        点击
      </button>

就是触发user仓库下的reducers里面的changName方法

小仓库是这样的

const userSlice = createSlice({
  name: 'user',
  initialState: {
    name: 'lsm',
    age: 24,
  },
  reducers: {
    changName(state, actions) {
      state.name = actions.payload;
    },
  },
});

但是这种写法太蠢了!!

 dispatch({ type: 'user/changeName', payload: '饭桶' })}

很容易写错前面的type,太长了, 也不优雅!! 怎么办? 可以在小仓库把reducers的方法导出就行

export const { changeName } = userSlice.actions;

他执行返回的就是一个action对象

所以在组件把它导入直接调用就行

import { changeName } from './store/user';

为什么报错? 

因为我这里写了第二个参数, 所以必须得传, 想不报错就把他删掉也行


http://www.kler.cn/a/465911.html

相关文章:

  • 百度Android最新150道面试题及参考答案 (中)
  • ARM CCA机密计算安全模型之加密建议
  • 【微信小程序获取用户手机号
  • 超越YOLO11!DEIM:先进的实时DETR目标检测
  • 数据结构与算法之动态规划: LeetCode 213. 打家劫舍 II (Ts版)
  • vue学习第一阶段
  • OCR图片中文字识别(Tess4j)
  • Lua开发环境如何安装?保姆级教程
  • 大数据-268 实时数仓 - ODS层 将 Kafka 中的维度表写入 DIM
  • Java编程规约:集合处理
  • 线性变换在机器学习中的应用实例
  • 深入AIGC领域:ChatGPT开发者获取OpenAI API Key的实用指南
  • 公司一个bug引出的对象判空、空指针异常话题之NUll、isEmpty()和“”区别
  • 【华为OD-E卷 - Linux发行版的数量 100分(python、java、c++、js、c)】
  • 【开源免费】基于SpringBoot+Vue.JS保密信息学科平台(JAVA毕业设计)
  • 电脑文件msvcp110.d丢失的解决方法
  • Transformer算法实现IMDB文本分类任务和WMT14机器翻译任务
  • 数据库进阶教程之存储过程(万字详解)
  • 021-spring-springmvc-组件
  • Java重要面试名词整理(二十):GatewaySkyWalking
  • ELK zookeeper kafka
  • 基于Matlab的变压器仿真模型建模方法(12):单相降压自耦变压器的等效电路和仿真模型
  • 供需平台信息发布付费查看小程序系统开发方案
  • Linux内核 -- Netlink多播组消息处理技术
  • STM32-笔记30-编程实现esp8266联网功能
  • Unity-Mirror网络框架-从入门到精通之Benchmark示例