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

[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);

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

例如我写

 <buttononClick={() => 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.lryc.cn/news/514969.html

相关文章:

  • Postgresql 命令还原数据库
  • 电脑找不到mfc110.dll文件要如何解决?Windows缺失mfc110.dll文件快速解决方法
  • Elasticsearch与数据库数据一致性:最佳实践与解决方案
  • vue导入导出excel、设置单元格文字颜色、背景色、合并单元格(使用xlsx-js-style库)
  • 电子电气架构 --- 中央处理器HPC及软件架构
  • 代码实战:基于InvSR对视频进行超分辨率重建
  • 一文读懂主成分分析法(PCA)
  • Redis(基础篇 + 实践篇 )
  • 高质量C++小白教程:2.10-预处理器简介
  • 一、二极管(模电理论篇)
  • JAVA学习笔记_JVM
  • SQL 中复杂 CASE WHEN 嵌套逻辑优化
  • STM32-笔记34-4G遥控灯
  • 被催更了,2025元旦源码继续免费送
  • Java(day1)
  • PDF文件提示-文档无法打印-的解决办法
  • ubuntu操作系统安装SSH服务
  • Beamer-LaTeX学习(教程批注版)【1】
  • IIS设置IP+端口号外网无法访问的解决方案
  • Markdown段落的空行缩进用法
  • [paddle] 非线性拟合问题的训练
  • 每日一学——监控工具(Grafana)
  • FreshTomato 路由器固件常见配置以及踩坑记录
  • ubuntu 使用samba与windows共享文件[注意权限配置]
  • 使用 httputils + chronicle-bytes 实现金融级 java rpc
  • 软件工程期末复习(一)
  • element ui 组件 时间选择器出现转换问题的解决办法
  • 报错:websocket注入为null,已解决!
  • .e01, ..., .e0n的分卷压缩包怎么解压
  • 四年前的计划,青涩但坚韧