redux拓展优化action creator 与Action Type的使用

redux拓展优化action creator

dispatch({type: 'book/add', payload: '三国演义'})
dispatch({type: 'book/add', payload: '红楼梦'})

一个action的type名字出现多次,多次dispatch会重复,不利于修改

思路

补充一个action creator。

  • 它是一个函数。

  • 作用:用来创建指定类型的action。

  • 入参:payload

  • 返回值: action

  • 示例: 

const addAction = (payload) => ({type: 'book/add', payload})
dispatch(addAction('三国演义'))
dispatch(addAction('红楼梦'))

实操

在store目录下,补充创建actions目录,按reducer的模块,来划分每一个具体的actions

├── src
   ├── store          # redux目录,一般约定叫store
   |     ├── index.js   # 定义并导出store. 其中会导入reducer
+  |     └── actions    # 多个模块的action
+  |         ├── action1.js    # 模块1的 相关action creator
+  |         ├── action2.js    # 模块2的 相关action creator
   |     └── reducers   # 多个模块的reducer
   |         ├── reducer1.js   # 模块1的reducer
   |         ├── reducer2.js   # 模块2的reducer
   |         └── index.js      # reducer的整体入口,会导入reducer1, reducer2
   ├── index.js       # 项目的入口文件,会导入并渲染App.js
   ├── App.js         # 根组件,引入模块1 和模块2 组件
   ├── 模块1.js       # 模块1 组件
   └── 模块2.js       # 模块2 组件

示例代码

export const addAction = (payload) => ({type: 'book/add', payload})

redux拓展优化Action Type的使用

背景:在reducer和action creator中都用到了一个字符串的 action type。

问题:容易写错,不利于统一修改。

解决

思路:集中处理 action type,保持项目中 action type 的一致性

处理方式:

  1. 在 store 目录中创建 actionTypes 目录或者 constants 目录,集中处理

  2. 使用常量来存储 action type。例如 

export const SET_NAME = 'user/setName'
export const SUB_MORE = 'money/subMore'

注意:常量名一定要是全大写的方便识别    

 3.将项目中用到 action type 的地方替换为这些常量,从而保持项目中 action type 的一致性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值