redux快速上手

React 状态管理:Redux Toolkit 快速上手指南 <p>计数: {count}</p><button onClick={() => dispatch(increment())}>增加</button><button onClick={() => dispatch(decrement())}>减少</button> 阅读详情


这里只是最简单的使用方法

前提知识

在这里插入图片描述

  1. store:整个应用只有一个store,redux提供createStore方法来创建store
  2. state:是store中的数据,是只读的,可以通过:store.getState()获取,修改方法是触发action
  3. action:用于告诉redux需要更改state,action出来的对象必须包含type属性,表明action名称
  4. dispatch:用于将action传递给reducer,是view沟通store的唯一方式!一般在view上调用dispacth,传一个ation过去
  5. reducer:接收action和state,根据不同的action处理state,并返回一个新的state,必须是纯函数(只要是同样的输入,必定得到同样的输出)
  6. subscribe:用于监听state的状态变化并执行回调函数。store.subscribe(callback)方法返回一个函数,调用这个函数就可以解除监听,只要把 View 的更新函数(对于 React 项目,就是组件的render方法或setState方法)放入listen,就会实现 View 的自动渲染。

实践流程

普通来讲,如果是同步请求:

  1. 定义action
function addAge(id) {
  return {
    type: 'ADD_AGE',
    id
  }
}
  1. 定义reducer
const defaultState = {name:"",age:0,id:""};
const reducer = (state = defaultState, action) => {
  switch (action.type) {
    case 'ADD_AGE':
      // 省略处理逻辑
      return {...state,age:state.age+1};
    default: 
      return state;
  }
};
  1. 创建store
import { createStore } from 'redux';
const store = createStore(reducer);
  1. 页面调用
export default function App() {
  const [state, setState] = useState({});

  useEffect(() => {
    return Store.subscribe(() => {
      setState(Store.getState()); // 订阅时,注册了一个回调函数,每次状态更新,该函数会被自动调用
    });
  }, []);

  function click() {
    Store.dispatch(addAge("123"));
  }
  return(<>{state}</>)
}

在异步情况中,需要使用中间件,因为:dispatch一个action之后,到达reducer之前,进行一些额外的操作,就需要用到middleware。你可以利用 Redux middleware 来进行日志记录、创建崩溃报告、调用异步接口或者路由等等。

  1. 引入中间件redux-thunk
import { applyMiddleware, createStore } from 'redux';
import thunk from 'redux-thunk';
// 该中间件可以让原来的dispatch接收的由对象变为函数
// 如果是对象就正常接收并发送给reducer,如果是函数则执行函数
const store = createStore(
    reducers, 
    applyMiddleware(thunk)
);
  1. 写services.js,定义API结构,如
export function getInfo(name){
  return Axios.get('/test?name='+name);
}
  1. 定义一个异步action,返回一个函数,入参是dispatch
const GET_INFO = '获取信息';
const getInfo = async name => dispatch =>{
  // 逻辑省略
  getInfo(name).then(res=>dispatch({
    type: 'GET_INFO ',
    info:res
  })
}

其他的都一样

react-redux

只在view层不一样:新增两个函数,含义就是字面意思

  • mapStateToProps
  • mapDispatchToProps
    新增一个高阶函数:connect(mapStateToProps,mapDispatchToProps),返回一个函数,将组件传入返回的函数可以获得被包装后的组件!
    使用方法:
import React from "react";
import { connect } from "react-redux";
import { Action01, Action02 } from "../../actions/Demo01";
function Demo_01(props) {
  return (
    <div>
      demo_01
      <div></div>
      <button onClick={() => props.action01("bt1")}>action01</button>
      <button onClick={() => props.action02("bt2")}>action02</button>
      <p>{props.msg}</p>
      <p>{props.value}</p>
    </div>
  );
}

export default connect(
  function mapStateToProps(state) {
    return {
      msg: state.Demo01.msg,
      value: state.Demo01.value
    };
  },
  function mapDispatchToProps(dispatch) {
    return {
      action01: (msg) => dispatch(Action01(msg)),
      action02: (value) => dispatch(Action02(value))
    };
  }
)(Demo_01);

合并多个reducer并提供应用初始状态

使用combineReducers中间件来合并多个reducer,用于划分状态

import { createStore, combineReducers, applyMiddleware } from "redux";
import ReduxThunk from "redux-thunk";
import Demo01Reducer from "../reducers/Demo01";
import Demo02Reducer from "../reducers/Demo02";
import Demo01State from "../state/Demo01";
import Demo02State from "../state/Demo02";
const allReducers = combineReducers({
  Demo01: Demo01Reducer
  Demo02: Demo02Reducer
});
export default createStore(
  allReducers,
  {
    Demo01: Demo01State,
    Demo02: Demo02State
  },
  applyMiddleware(ReduxThunk)
);

PowerDesigner16.5下载和安装教程 一、软件下载 1.下载地址(不用复制,直接点击下载链接即可):链接:https://pan.baidu.com/s/1MSnWHWt3SO2Uz5dt9AANAg提取码:z9kk 二、软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3.... 阅读详情

相关推荐

从零构建EtherCAT从站:SSC工具配置与TwinCAT3 PDO/SDO调试实战

本文详细介绍了从零构建EtherCAT从站的完整流程,重点讲解SSC工具配置与TwinCAT3 PDO/SDO调试实战。通过解析EtherCAT通信机制、PDO与SDO的核心概念,提供SSC工具配置技巧、XML文件生成与校验方法,以及TwinCAT3环境下的调试经验,帮助开发者高效完成EtherCAT从站开发与优化。

weixin_42520573的博客 339

在redux中如何进行异步操作?在redux中如何发送网络请求?

在理解如何在Redux中进行异步操作之前,让我们先了解什么是异步操作。异步操作是指在执行某个任务时,不必等待该任务完成,就可以继续执行下一个任务。在JavaScript中,异步操作通常用来处理网络请求、文件I/O和用户交互等方面。异步操作在Web应用程序中非常常见,因为Web应用程序通常需要与服务器进行交互,而这些交互通常需要一定的时间才能完成。在这种情况下,异步操作使得Web应用程序能够继续响应用户的输入,而不必等待服务器响应完成。

tyxjolin的专栏 1407

Perplexity SPACE沙箱平台:安全AI开发环境实战解析

沙箱技术通过资源隔离和权限控制创建受限执行环境,其核心原理是容器化隔离机制。在AI开发领域,这种技术解决了环境配置复杂性和安全风险等关键问题。SPACE沙箱平台作为AI代码执行环境,提供了标准化的开发沙箱,支持Python生态和主流AI框架。通过实战案例展示,该平台特别适用于情感分析等NLP任务的快速原型验证,帮助开发者在安全隔离的环境中测试AI模型和算法,显著提升开发效率并降低系统风险。

weixin_29029995的博客 274

redux是如何进行异步的

redux Thunk:通过npm add redux-thunk安装redux-thunk库,在store中,创建store时候、引入applyMiddware方法来使用resux-thunk在组件使用异步actionredux Saga:通过npm add redux-Saga安装组件redux-saga库,拆件一个saga文件用于处理异步操作,在创建store时候将saga作为中间件应用,创建对一个的action,在组件中使用异步的action。

m0_71955188的博客 1149

基于STM32F103C8T6的红外循迹避障小车

编程思路:控制核心板IO口的电平(即电机驱动模块的AIN1,AIN2,BIN1,BIN2)从而控制AO1、AO2、BO1、BO2的电平高低,进而控制电机使其正转、反转、不转。由于单纯地拉高拉低电平只能让电机在转与不转的状态切换,故决定利用TIM4的两个通道分别产生两路PWM信号来控制电机速度,四个电机两个一组,同一侧的两个连接在同一个PWM上。(#include "dianji.h"文件中同时写了对循迹模块引脚的初始化)

weixin_48743503的博客 1万+

WD西部数据2TB,2.5寸移动硬盘,因为磁头坏了,长时间通电导致划片划伤,维修过程通过反复更换磁头

WD西部数据2TB,2.5寸移动硬盘,因为磁头坏了,长时间通电导致划片划伤,维修过程通过反复更换磁头,才能利用专业设备,里面找到,镜像,把内容数据恢复出来。 1.说一下经历,借用的别人移动硬盘,去帮别人维修,拷数据出来,别人的文件,数据比较多,且复杂,而且是在PE系统,接口什么的是2.0,没有很好的思考就全选复制拷贝了; 2,拷贝的过程,极其慢,文件多,且文件有损坏,移动硬盘一直处于通电的状态,大概从下午,两点多开始100多G的数据,一直卡住,到,晚上7 。8点拷完还是没拷完。打开的时候就已经,就一直

weixin_43766920的博客 4301

Redux 异步数据管理

前言 redux 只处理同步数据流,异步数据流交给 “中间件” 处理。 redux 中间件经历了三次发展: redux-thunk redux-promise redux-saga 一、中间件的概念 “中间件的概念”引自阮一峰老师的博客《Redux 入门教程(二):中间件与异步操作》,欲进一步学习请自行加餐阮老师准备的盛宴。 为了理解中间件,让我们站在框架作者的角度思考问题:如果要添加功能,你会在哪个环节添加? (1)Reducer:纯函数,只承担计算 State 的功能,不合适承担.

青蛙king的博客 1339

用于可靠的钙钛矿薄膜瞬时光致发光模拟的拟合程序

简介 对光激发后的电荷载流子动态的研究对于确定太阳能电池的几个特性至关重要,例如,体和界面重组的数量以及向电荷传输层转移过程的速度。 瞬态光致发光(trPL)是用于研究这些特性的最流行的表征方法之一。 该实验是通过在样品上照射几纳秒的激光脉冲,并记录一段时间内的发光情况来进行的。辐射性重组的光生电荷载流子将引起太阳能电池的光子发射,而非辐射性重组的电荷载流子将不会对发光作出贡献。因此,可以测量到强度随时间递减的光致发光瞬态。(见图1表示trPL的测量和它的输出)。 图1. 一...

FluximAG的博客 2362

Redux中进行异步操作(网络请求)的方案

我们可以直接通过同步的操作来dispatch action,state就会被立即更新。但是真实开发中,redux中保存的很多数据可能来自服务器,我们需要进行异步的请求,再将数据保存到redux中。

m0_71485750的博客 1万+

概率质量函数(PMF)、概率密度函数(PDF)、累积分布函数(CDF)

1.概率分布函数(Probability Distribution Functions) 笔记来源:Probability Distribution Functions (PMF, PDF, CDF) 1.1 离散型:PMF和CDF 1.2 连续型:PDF和CDF 累积分布函数的导数 === 概率密度函数的函数值 dF(x)dx=f(x) \frac{dF(x)}{dx}=f(x) dxdF(x)​=f(x) 概率密度函数与 xxx 轴围成的面积 === 累积分布函数的函数值 ∫−∞xf(x)d

一个搬运知识的笨小孩 3万+

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏5(附项目源码,完结)

本期是本项目的最后一篇,主要内容是配置环境、生成不同敌人、结束重开。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2570

redux中多个reducer合并详解及注意事项

前言:

GreyCastle的博客 2994

AI原生应用架构师指南:系统化思维框架解析

随着ChatGPT、Stable Diffusion等AI技术的普及,「AI原生应用」(AI-Native Application)已从概念走向实践。传统应用以「功能逻辑」为核心(比如用代码写死的购物车规则),而AI原生应用以「数据+模型」为核心(比如根据用户行为动态推荐商品)。本文的目的是为架构师提供一套系统化思维框架如何区分「伪AI应用」和「真AI原生应用」?数据、模型、业务场景三者如何协同设计?架构师需要关注哪些关键技术节点?如何避免「为了AI而AI」的陷阱?

AI Python 编程之道的博客 491

快速上手 react-redux

前言 这篇文章就是介绍如何在 react 中使用 redux,至于其 redux 底层工作原理,我也不懂。就像开车一样,这篇文章只会教你怎么开车,至于车是怎么构成的我不知道,也不用知道。。框架封装出来就是直接拿来用的嘛,所以用就完事了。。 redux 是用来干什么的? 简单来说,redux 就是一个仓库管理工具。 在一个项目中肯定有很多个组件,其中也有很多组件是有状态的,也就是说某些组件里保存了数...

TM_Godspeed的博客 273

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Redux快速上手

Redux Redux is a predictable state container for JavaScript apps.Redux是一个js应用的可预测状态容器。Redux是...

qq_1015350043的博客 209

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Redux、React Redux 快速学习上手、简单易懂、知识速查

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。

张先生的前端日志 844

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

一文快速上手 Redux

一文快速上手 Redux 来自 Redux 官网 上列的基础教程之一,是 egghead.io 上的,视频网址 境内能够打开,笔记在 github 上也有。 这里只节选了部分内容,旨在学完了之后就能直接用 store, action 和 reducer 的功能。 Redux 内容提炼 Redux 只有一个不可变的状态树 action 用来描述 Redux 的状态变化 reducer 去实现 Redux 的状态变化 dispatch 用于触发 action 去调度对应的 reducer 去对状

GoldenaArcher的博客 603

如何快速上手Redux-Saga:10分钟掌握核心概念

Redux-Saga是一个专门为Redux应用程序设计的中间件,用于优雅地处理异步任务和副作用。它通过Generator函数让复杂的异步流程看起来像同步代码一样清晰易懂,是处理数据获取、缓存访问等异步操作的终极解决方案。😊 ## 什么是Redux-Saga? Redux-Saga将应用程序的副作用(如异步数据获取)管理得更加简单高效。它的核心理念是将Saga视为应用程序中的一个独立线程,专门

gitblog_00377的博客 361

Redux 快速上手指南

Redux简介 如果要用一句话来概括Redux,那么可以使用官网的这句话:Redux是针对JavaScript应用的可预测状态容器。此句话虽然简单,但包含了以下几个含义: 可预测性(predictable): 因为Redux用了reducer与纯函数(pure function)的概念,每个新的state都会由旧的state建来一个全新的state。因而所有的状态修改都是”可预测的”。 状态...

xiangzhihong8的专栏 2万+

如何从零安装verl:Docker、vLLM与FSDP环境配置完整避坑清单

verl(HybridFlow)是字节跳动 Seed 团队开源、社区共同维护的 **LLM 强化学习后训练框架**,支持 PPO、GRPO、DAPO 等主流 RL 算法,训练端可选 **FSDP / FSDP2 / Megatron-LM**,推理 rollout 端可选 **vLLM / SGLang**。本文将带你从零完成 **verl 安装**:Docker 镜像快速部署、vLLM 版本选择

gitblog_00934的博客 217

什么是redux? redux快速上手(示例)? redux源码?(听不懂我给你磕一个)

用官网的话来说redux是“一个可预测、可维护的全局状态管理的 JS 库 Redux 用闭包私有化了状态,dispatch 唯一改状态通道,subscribe 通知 UI 更新。 Redux 核心就那么点,但设计思想精妙(单向数据流 + 不可变 + 纯函数)。

卷王 1632

快速上手Redux (redux的基本使用)

Redux是一个用于管理JavaScript应用程序状态的库,专注于解决应用程序中状态管理的问题。简单来说就是可以使各组件实现对数据共享和操作,类似于Vue中的Pinia和Vuex。Redux虽然是一个框架无关可以独立运行的插件,但是社区通常还是把它与React绑定在一起使用。

Lil_y1的博客 1362

React归纳笔记:快速上手Redux之一初识

如何打造可复用的视图组件一直是React所关注的。但如果你要开发一个大型的web应用的话,只使用React是一件非常痛苦的事情。因为单是解决组件之间的数据传递与状态管理就够你喝一壶的了!在此向各位力荐一类库——Redux,它可以帮助我们更加高效、清晰地对应用和组件的状态进行管理! Redux介绍 随着单页面应用的需求越来越复杂,你所需要管理的状态也越来越多。这里所说的状态即是数据,它不仅仅包括...

张培跃的个人博客 2127

redux & react-redux 快速上手文档

说在前头: Redux 是一个它让你能以一种集中式的方式管理应用程序的状态(即数据和 UI 的变化源),并以相应的方式更新和改变这个状态。这种集中式的状态管理使得组件之间的数据共享变得容易,也提高了代码的可维护性。

weixin_43922547的博客 781

react基础之redux快速上手环境准备

Redux 是一个状态管理库,通常与 React 一起使用,帮助开发者管理应用的全局状态。它的核心理念是将应用的状态存储在一个单一的、不可变的状态树中,并通过分发(dispatch)动作来更新状态。在reducers的同步修改方法中添加action对象参数,在调用actionCreater的时候传递参数,参数会被传递到action对象payload属性上。3.store中的入口文件 index.js 的作用是组合modules中所有的子模块,并导出store。纯函数,接受当前状态和动作,返回新的状态。

肥晨开发的学习之路 1171

Redux | 一文带你快速上手

一文了解redux主要功能及其对应模板配置

delete_you的博客 485
上一篇: es6和commonjs对导入导出的值修改是否影响原模块
下一篇: Service Worker 简单学习
天落枫
博客等级 码龄10年 91粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值