React Dva项目小优化之redux-action

之前 我们讲过 models

接下啦 我们来给大家讲一个新的库

这个库的话 有最好 没有影响也不大

它主要是帮助我们处理 action的

我们直接在 GitHub 官网上搜索 redux-action

我们搜出来 第一个就是 从星数来看 还是非常优秀的

我们拉下来 找到这个Documentation 然后点击进去

进入之后 拉下来 找到下面这个API 点击进去

第一件事 我们肯定是去安装这个依赖

终端执行

javascript 复制代码
npm install --save redux-actions

它本身的API很少 只有三个

这里 我们也不一一介绍了

然后 我们在 src文件夹下创建一个文件夹 叫 actions 里面创建一个文件 叫 index.js

然后 我这里 根目录下 models 下有一个AsynchSchedul.js

代码是这样的

javascript 复制代码
import * as api from "../services/example";

export default {

    namespace: 'AsynchSchedul',
  
    state: {},

    effects: {
        *getAsynchSchedulList({ payload }, { call, put }) {  // eslint-disable-line
            const dataList = yield call(api.getFilmData,payload);
            yield put({
                type: 'save',
                payload: dataList.data
            });
            return dataList.data
        },
    },
    subscriptions: {
        setup({ dispatch, history }) {
            history.listen((location) =>{
                console.log(location);
            })
        },
        
    },
}

那么 正常情况

我们想在组件中使用这个getAsynchSchedulList函数

应该这样

javascript 复制代码
this.props.dispatch({
   type: "AsynchSchedul/getAsynchSchedulList",
  payload: {
    id: 123
  }
}).then(res => {
  console.log(res);
})

但看着不是那么方便 我们可以将actions下的index.js改成这样

javascript 复制代码
import { createAction } from "redux-actions";

export const getAsynchSchedulListApi = createAction("AsynchSchedul/getAsynchSchedulList");

就是定义一个变量名 接收这里面用createAction包一层地址 然后调用导出

之后 我们在要使用的地方这样写

引入是肯定要引入的

然后通过this.props.dispatch 里面直接放你包裹的函数去调用 如果有参数直接传给你包装的函数

例如 我这里的对象参数 直接就放在了getAsynchSchedulListApi中

这样 做一个小优化

老实说 这个东西给人的感觉有一点点画蛇添足 不要也罢

相关推荐
candyTong8 小时前
一觉醒来,大模型就帮我排查完页面性能问题
前端·javascript·架构
玩嵌入式的菜鸡8 小时前
网页访问单片机设备---基于mqtt
前端·javascript·css
前端一小卒9 小时前
我用 Claude Code 的 Superpowers 技能链写了个服务,部署前差点把服务器搞炸
前端·javascript·后端
kyriewen12 小时前
Next.js部署:从本地跑得欢,到线上飞得稳
前端·react.js·next.js
豹哥学前端13 小时前
用猜数字游戏,一口气掌握 JavaScript 核心知识点(附完整代码)
前端·javascript
忆往wu前13 小时前
从0到1一步步拆解搭建,梳理一个 Vue3 简易图书后台全开发流程
前端·javascript·vue.js
shao91851614 小时前
第3章(2)——使用Gradio JavaScript Client
javascript·node.js·cdn·gradio·job·events·playcode
光影少年14 小时前
大屏页面,一次多个请求,请求加密导致 点击 全局时间选择器 时出现卡顿咋解决(面板收起会延迟1~2秒)
前端·javascript·vue.js·学习·前端框架·echarts·reactjs
Mr.mjw14 小时前
vue中封装一个环形进度条组件,根据外部盒子大小自适应变化
前端·javascript·vue.js
无心使然14 小时前
Openlayers调用ArcGis影像服务之一动态地图、地图切片(/exportImage)
前端·javascript·数据可视化