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

redux中间件的简单讲解

redux中间件

中间件的作用: 就是在 源数据目标数据 中间做各种处理,有利于程序的可拓展性,通常情况下,一个中间件就是一个函数,且一个中间件最好只做一件事情

数据源 --------> 中间件 --------> 中间件 --------> 中间件 --------> 目标数据

applyMiddleware

applymiddleware将一堆函数封装成一个函数,这些函数的执行顺序由next传递

柯里化:多参函数->单参函数

applyMiddleware(xxxx, xxxx)

手撕thunk

在store 目录下新建 middleware 文件,并创建文件 thunk.js

export defualt ({dispatch}) => next => action => {if (typeof action === 'function') return action(dispatch)return next(action)
}
  1. 当前这个中间件西数不关心你想执行什么样的异步操作 只关心你执行的是不是异步操作

  2. 如果你执行的是异步操作 你在触发action的时候 给我传递一个函数 如果执行的是同步操作 就往下执行

  3. 异步操作代码要写在你传递进来的函数中

  4. 当前这个中间件函数在调用你传递进来的西数时 要将dispatch方法传递过去

在 store 中引入

index.js

import { legacy_createStore as createStore, applyMiddleware } from "redux";
import reducer from "./reducers/root.reducer";
import thunk from "./middleware/thunk";const store = createStore(reducer, applyMiddleware(thunk))export default store

使用

modal.actions.js

import { CHANGEMODALSHOW } from '../const/modal.const'export const changeModalShow = value => ({type: CHANGEMODALSHOW, value})export const changeModalShow_async = value => dispatch => {setTimeout(()=> {dispatch(changeModalShow(value))}, 2000)
}

Modal.js

import React from 'react'
import { bindActionCreators } from 'redux'
import { connect } from 'react-redux'
import * as modalActions from '../store/actions/modal.actions'const Modal = ({isShowModal, changeModalShow, changeModalShow_async}) => {const styles = {width: '400px',height: '400px',left: '50%',top: '50%',position: 'absolute',transform: 'translate(-50%, -50%)',background: 'aliceblue',display: isShowModal ? 'block' : 'none'}const handelShowModal = () => {changeModalShow_async(true)}const handelHiddenModal = () => {changeModalShow(false)}return (<div><button onClick={handelShowModal}>显示</button><button onClick={handelHiddenModal}>隐藏</button><div style={styles}></div></div>)
} const mapStateToProps = state => ({isShowModal: state.modal.isShowModal
})const mapDispatchToProps = dispatch => bindActionCreators(modalActions, dispatch)export default connect(mapStateToProps, mapDispatchToProps)(Modal)

redux-thunk

Redux 的Thunk中间件。它允许编写内部带有逻辑的函数,可以与 Redux 存储dispatchgetState方法进行交互

安装

npm install redux-thunk

在 store 中引入

import { legacy_createStore as createStore, applyMiddleware } from "redux";
import reducer from "./reducers/root.reducer";
import thunk from "redux-thunk";const store = createStore(reducer, applyMiddleware(thunk))export default store

效果是跟自己手写thunk效果一样的

http://www.lryc.cn/news/161025.html

相关文章:

  • 嵌入式开发-绪论
  • 大数据知识合集之预处理方法
  • mysql(九)mysql主从复制
  • nodejs采集淘宝、天猫网商品详情数据以及解决_m_h5_tk令牌及sign签名验证(2023-09-09)
  • 虚拟机上部署K8S集群
  • 设计模式 - 责任链
  • 【小沐学Unity3d】3ds Max 骨骼动画制作(CAT、Character Studio、Biped、骨骼对象)
  • CUDA说明和安装[window]
  • sqlserver2012性能优化配置:设置性能相关的服务器参数
  • 介绍 dubbo-go 并在Mac上安装,完成一次自己定义的接口RPC调用
  • 目标检测数据集:摄像头成像吸烟检测数据集(自己标注)
  • Unity的UI管理器
  • Mp4文件提取详细H.264和MP3文件
  • Qt应用程序连接达梦数据库-飞腾PC麒麟V10
  • 2023-09-03 LeetCode每日一题(消灭怪物的最大数量)
  • 绘图 | MATLAB
  • 2023年下半年高项考试学习计划
  • SpringBoot中CommandLineRunner的使用
  • <OpenCV> Mat属性
  • LAMP 综合实验
  • JavaScript发展历程
  • LP(六十九)智能文档助手升级
  • VIM统计搜索关键词命令
  • 0017Java程序设计-spr农业过程化管理系统
  • 以可视化方式解释 Go 并发 - 通道
  • kafka学习-生产者
  • 【Python】设计模式
  • C++ 数字
  • code阶段——gitgitlab安装
  • C 风格文件输入/输出---无格式输入/输出