【React】 20课 解决reactn内的redux异步执行函数报错方法

2023-11-06

redux内异步函数执行如图所示:

在这里插入图片描述

本项目的目录结构如下:
在这里插入图片描述

redux内实现异步方法首先我们需要安装redux-thunk:

cnpm install redux-thunk --save

在这里插入图片描述
在创建数据仓库的过程我们通过compose方法与applyMiddleware中间件来解决异步函数问题

const store = createStore(
  reducer,
  compose(
    applyMiddleware(thunk)  //中间件用于处理store仓库内部异步方法
  )
); 

本项目主要代码如下:

在redux文件夹中我们存放redux的index.js文件 内容如下:

const add_Num = '增加一条数据';
const remove_Num = '删除一条数据';

// import {createStore} from "redux";
/*
  state:数据原先的状态
  action:需要来进行改造的内容
    action.type 决定你要处理的类型
      进行判断:if,swich
*/ 
export function reducer(state=0,action){
  switch(action.type){
    case '增加一条数据':
      return state + 1
    case '删除一条数据':
      return state - 1
    default:
      return 0
  }
}

export function addNum(){
  return{
    type: add_Num
  }
}

export function removeNum(){
  return{
    type: remove_Num
  }
}

//异步函数
export function removeAsync(){
  return dispatch=>{
    setTimeout(()=>{
      dispatch(removeNum())
    }, 2000)
  }
}

在src内的index.js文件我们创建一个store数据创库 内容如下:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './redux/index'
import {
  reducer,
  addNum,
  removeNum,
  removeAsync
} from './redux/index'; //导入redux文件
//applyMiddleware中间件, compose处理异步函数的方法
import { createStore, applyMiddleware,compose } from 'redux';  //引入redux
import thunk from 'redux-thunk';

//创建库
const store = createStore(
  reducer,
  compose(
    applyMiddleware(thunk)  //中间件用于处理store仓库内部异步方法
  )
); 

render();
function render(){
  ReactDOM.render(
    <App 
      store={store}
      add={addNum}
      remove={removeNum}
      removeAsync={removeAsync}
    />,
    document.getElementById('root')
  );
}

//监听到dispatch事件执行,后数据改变时就执行render()
store.subscribe(render)

在App组件中执行数据仓库内的异步函数:

import React, { Component } from 'react'

export default class App extends Component {
  render() {
  //获取根组件传递过来的 数据仓库与仓库内的方法
    const {store, add, remove,removeAsync} = this.props;
    return (
      <div>
        <h1>redux实践</h1>
        <h2>数据有{ store.getState() }</h2>
        
        <input 
          type="button"
          value={'增加'}
          onClick={
            ()=>{store.dispatch( add() ) }
          }
        />
        <input 
          type="button"
          value={'删除'}
          onClick={
            ()=>{store.dispatch( remove() ) }
          }
        />
        {/* {异步的函数} */}
        <input 
          type="button"
          value={'异步删除数据'}
          onClick={
            ()=>{store.dispatch( removeAsync() ) }
          }
        />
      </div>
    )
  }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【React】 20课 解决reactn内的redux异步执行函数报错方法 的相关文章

  • STM32之ADC实验

    实验的基本功能 采集PC0引脚的输入电压 通过串口打印出采集的电压值 本实验是使用通道10 采集PC0引脚的输入电压 include stm32f10x h include stm32f10x usart h include

随机推荐

  • mac 卸载idea

    卸载MAC中的IDEA Intellij 首先在应用里面右键移动到垃圾桶 然后使用命令行 cd Users xxx Library 上面的xxx对应你的用户名 然后输入 rm rf Logs IntelliJIdeaxxx rm rf Pr
  • 域名续费怎么才能便宜?2023年腾讯云服务器和域名续费贵怎么续费便宜?

    背景 在腾讯云的有一个域名到期了需要续费 xyz续费居然有79元 真的贵 建议大家在购买域名之前参考我之前的文章 直接买个188元10年的top域名真的香 我是因为小程序都布置好了 如果重新更改域名太累了 所以只能续费 直接续费需要79元
  • 云服务器部署 Web 项目

    一 搭建 Java 部署环境 1 安装 JDK 2 安装 Tomcat 总结 3 安装 MySQL 1 依次安装 2 更改配置 3 启动 4 测试连接 二 部署 web 项目 1 给服务器准备好依赖的数据 2 微调我们的 Java 代码 3
  • Requests模块怎么设置字符编码

    Requests模块在发出网络请求时 支持设置字符编码 主要有以下两种方式 在请求头中设置字符编码 可以通过headers参数设置字符编码 例如 import requests url http www example com header
  • C# SuperSocket 手把手教你入门 傻瓜教程---11(FixedSizeReceiveFilter - 固定请求大小协议)不使用COMMAND

    SuperSocket内置的常用协议实现模版如下 1 TerminatorReceiveFilter SuperSocket SocketBase Protocol TerminatorReceiveFilter SuperSocket S
  • linux命令:修改用户密码

    修改用户密码用passwd命令 假设现在已经用root用户登陆 1 修改root用户密码 在终端直接输入 root armbian passwd New password 输入第一次密码 Retype new password 输入第二次密
  • 3个字节的空txt文本文件

    运行下面代码可以建立一个3个字节的空txt文本文件 想了解其原因的请参考文本文件的编码方式和unicode的具体资料 google上就有很多 System IO FileStream fs new System IO FileStream
  • matlab实现数值积分 【一】(trapz函数)

    目录 总述 函数调用格式 应用举例 例1 梯形法求积分 例2 不同步长对积分结果的影响 总述 数值积分问题是传统数值分析课程中的重要内容 如果被积函数的数学表达式未知 则需要由实测数据通过梯形算法求出积分的近似值 本文将介绍被积函数的数学表
  • 门面设计模式

    github GitHub QiuliangLee pattern 设计模式 1 什么是门面设计模式 门面设计模式是一种软件设计模式 也被称为外观 Facade 模式 它提供了一个简单的接口 让客户端能够访问复杂系统中的一组接口 通过门面模
  • 打包部署也这么内卷--springboot项目的打包及一键服务器部署

    一 环境准备 1 cenos7服务器一台 2 更换yum源 yum install y wget mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo ba
  • C++常见编译WARNING小结

    首先要说的是大家不要对Warning视而不见 有时候通过Warning确实可以找到一些隐患 其次 未来新增代码应不允许Warning出现 有Warning需要修改掉 以下是常见的Warning小结 常见十大Warning 1 warning
  • 对象序列化(2):objectMapper.readValue详解

    1 反序列化方式 1 简单的直接Bean class 2 复杂的用 TypeReference 2 反序列化方法 首先说明 readValue 针对String 一共有3个重载 如下 public
  • 【UE4】4.26安卓打包流程

    前言 本教程适用于UE4 26 文章最后部分有常见问题解决与性能优化 教程开始 1 下载 Android Studio最新版 默认安装 请先关闭UE相关程序 2 打开Android Studio if启动时提示access SDK错误 点C
  • FPGA实现Cordic算法——向量模式

    FPGA实现Cordic算法 向量模式 FPGA实现Cordic算法 向量模式 1 cordic算法基本原理 2 FPGA实现cordic算法向量模式 i FPGA串行实现cordic ii FPGA流水线实现cordic iii 实验结果
  • 音视频是怎样实现传输的

    音视频传输时的基本步骤 1 发起会话 Sip协议 2 编码 硬件编码 软件编码 3 传输 RTP 4 解码 硬件解码 软件解码 5结束会话 Sip协议 视频格式 视频数据格式可以发展分为一个适合本地播放的本地影像视频和适合在网络中播放的网络
  • 洞悉MySQL底层架构:游走在缓冲与磁盘之间

    觉得写的很好 特转载便记录 提起MySQL 其实网上已经有一大把教程了 为什么我还要写这篇文章呢 大概是因为网上很多网站都是比较零散 而且描述不够直观 不能系统对MySQL相关知识有一个系统的学习 导致不能形成知识体系 为此我撰写了这篇文章
  • SQLyog中如何导入mysql数据库

    SQLyog是一种mysql的图形界面软件 有时需要把外部的mysql数据库导入到SQLyog里面去 下面是详细的操作步骤 1 打开SQLyog软件 输入密码 点击连接 打开软件界面 如下图所示 2 创建一个与要导入数据库相同名字的数据库
  • Maven项目报错:Plugin ‘maven-project-info-reports-plugin‘ not found

    一 报错原因 在创建项目的时候 没有加入依赖 二 解决办法 导入相关的依赖即可 可在pom xml中加入下面的依赖代码
  • 蓝桥杯 马虎的算式

    标题 马虎的算式 小明是个急性子 上小学的时候经常把老师写在黑板上的题目抄错了 有一次 老师出的题目是 36 x 495 他却给抄成了 396 x 45 但结果却很戏剧性 他的答案竟然是对的 因为 36 495 396 45 17820 类
  • 【React】 20课 解决reactn内的redux异步执行函数报错方法

    redux内异步函数执行如图所示 本项目的目录结构如下 redux内实现异步方法首先我们需要安装redux thunk cnpm install redux thunk save 在创建数据仓库的过程我们通过compose方法与applyM