博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redux-effect
阅读量:5328 次
发布时间:2019-06-14

本文共 1271 字,大约阅读时间需要 4 分钟。

npm install --save redux-effect

通过redux中间件的方式使async方法可以在redux中使用。

如果你使用redux-saga,应该非常容易上手redux-effect。effect概念正是来自于saga,其本身就是一个普通的async函数,你可以在此处理一些异步逻辑,管理reducer。

首先我们定义一个简易的reducer,没有特殊需求的话,reducer只做一件事,就是将action中的参数保存起来,很简单有木有。

function commonReducer(state = {}, action) {  switch (action.type) {      case 'common/save':        return {          ...state,          ...action.payload,        };      default:          return state;  }}

接着定义一个简陋的effect方法,用于从服务端获取一些数据,并将其存入reducer。

  • effect是一个普通的async方法。
  • 每个effect的第一个参数就是action,我一般将参数放在payload中。
  • effect的第二个参数是store对象,可以拿到dispatch和getState。
  • dispatch一个新的action,可以触发reducer,或者发起另一个effect。
  • getState则用于获取任意reducer已有的数据。
async function test ({ payload }, { dispatch, getState }) {  const data = await fetch()  await dispatch({ type: 'common/save', payload: data })}

定义好reducer和effect,就可以设置store了,参考代码如下:

import effect from 'redux-effect';const effects = {  'common/test': test}export const store = (initialState = {}) => {  const temp = createStore(    reducer,    initialState,    composeWithDevTools(applyMiddleware(effect(effects))),  );  return temp;};

然后就可以愉快的使用dispatch一个action来完成异步操作啦。

const { dispatch } = this.props;dispatch({ type: 'user/getUserInfo',});

Keywords

转载于:https://www.cnblogs.com/williamjie/p/9592283.html

你可能感兴趣的文章
自定义之一个图片根据另一个图片形状进行裁剪
查看>>
Intellij idea 导入 jdbc
查看>>
网络通讯
查看>>
MYSQL trigger 个人记录
查看>>
UEFI +、GPT 、BIOS 、 MBR的关系
查看>>
这两年在QQGame写过的游戏(2012.7.15-2014.8.25)
查看>>
spring中得到servletContext对象方法
查看>>
spring aop配置文档部分翻译
查看>>
Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml(转)
查看>>
Android 制作一个网页源代码浏览器(HttpURLConnection)
查看>>
导入模块
查看>>
代码规范之道
查看>>
java23中设计模式之适配器模式
查看>>
面向对象的JavaScript(一)命名空间
查看>>
SQL Server调优系列基础篇
查看>>
事件处理程序中 this 的指向
查看>>
Bugly符号化iOS 崩溃,快速定位crash(上传符号表)
查看>>
idea添加内存
查看>>
装饰器
查看>>
【leetcode刷题笔记】Largest Rectangle in Histogram
查看>>