分解优化react对redux的基础使用

news2024/12/23 14:57:48

之前写了
react18 通过redux 做一个简单的状态管理基站
但代码确实相对比较乱
这次进行一些小封装和分解 优化一下管理质量
首先 我们创建一个 react项目
然后在项目中引入

npm install redux --save

在src目录下创建 reducers 文件夹 下面创建 counter.js

counter.js 参考代码如下

let stateMap = {
   name: "小猫猫",
   money: 2800
}
const counter = ( state = stateMap,action )  => {
    switch(action.type) {
        case"PriceRise":
            state.money = (state.money + action.value);
            return state
        case"DevaLuation":
            state.money = (state.money - action.value);
            return state
        default:
        return state;
    }
}
export default counter

这里 我们做了一些修改 我们定义了一个默认的stateMap对象 作为redux的state 然后主要操作的是他的money金额字段 action 会从外面传入 其中 有两个字段 一个是 type 告诉counter 要进行什么操作

action.value 用于控制state下money(金额) 的值

PriceRise 则 我们加上去
DevaLuation 则减掉

然后在 src下创建action文件夹
action下创建index.js 参考代码如下

export function PriceRise(value) {
    return {
        type: "PriceRise",
        value: value
    }
}
export function DevaLuation(value) {
    return {
        type: "DevaLuation",
        value: value
    }
}

这里的方法 就负责产生 调用counter的数据

他们都有自己的type 然后value是外面传入的

src下创建目录 store 下面再创建一个index.js

参考代码如下

import { createStore } from "redux"
import reducer from "../reducers/counter"

// 创建store仓库
const store = createStore(reducer);

export default store

这里 负责用counter调用redux中的createStore生成对象 然后导出

然后在src下创建目录components 在下面建一个组件 taximeter.jsx 参考代码如下

import React from "react";
import store from "../store/index";
import {PriceRise,DevaLuation} from "../action/index";

class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      store: store.getState()
    }
  }
  
  onPriceRise = () =>{
    store.dispatch(PriceRise(10));
    this.setState({})
  }
  onDevaLuation = () =>{
    store.dispatch(DevaLuation(10));
    this.setState({})
  }

  render(){
    return (
      <div className="App">
        <button onClick={ this.onPriceRise }>涨价十个点</button>
        <button onClick={ this.onDevaLuation }>降价十个点</button>
        <div>{ store.getState().money }</div>
      </div>
    )
  }
}

export default App;

这里 我们定义了所有的逻辑代码 然后 我们将他在 App.js 根组件中使用

import './App.css';
import Taximeter from './components/taximeter';

function App() {
  return (
    <div className="App">
        <Taximeter/>
    </div>
  );
}

export default App;

启动项目 界面效果就会是这样
在这里插入图片描述
首先 我们在div中调用 store.getState() 获取到了state对象 展示了里面的money字段

然后我们点击 涨价十个点

通过调用PriceRise 每次加10 数据
在这里插入图片描述
一直点就会一直加
在这里插入图片描述

然后减也是一样的 这里需要注意 我们每次用了加减操作都会空调一次setState 这个意思是希望界面重新渲染一次 因为 react对redux 不像
vue对vuex 这个数据不是响应式的 需要你自己调用setState强行让界面重新渲染一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有什么免费python安装包?

前言 Python的安装涉及到&#xff1a;Python编辑器、Python解释器、Python包管理工具&#xff08;pip&#xff09;。因此&#xff0c;首先我们要搞清楚这三个东西都是啥。 Python编辑器 正如在电脑上编辑文档需要用Word、处理数据需要用Excel、做演示文稿需要用PPT、修图需要…

git add 命令详解

1. 前言 2. git add 基本操作 3. git add 命令参数 4. git add 背后做了什么 1. 前言 众所周知&#xff0c;git 中有工作区、暂存区、版本库三大组成部分 工作区: 电脑中能看到的目录&#xff0c;也就是写代码的地方 暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下…

【图像分割】灰狼算法最小交叉熵多阈值图像分割【含Matlab源码 903期】

⛄一、最小交叉熵多阈值图像分割简介 1 单阈值分割 设有两个概率分布P{p1, p2, …, pN}和Q{q1, q2, …, qN}, 交叉熵度量它们之间的信息量差异。其对称形式为 交叉熵既可看成是采用P取代Q作为单个系统概率分布时系统信息量变化的期望值, 也可看成是两个概率系统P和Q之间的信息…

CSAPP-Lab5 CacheLab解析

Review Cache Struct A cache is a set of 2s2^s2s cache setsA cache set is a set of E cache lines if E1, it is called “direct-mapped” Each cache line stores a blockTotal Capacity S * B * E 由此&#xff0c;我们可以写出cache line和cache的结构&#xff1a; …

微服务框架 SpringCloud微服务架构 服务异步通讯 50 消息可靠性 50.4 失败重试机制 50.4.1 消费者失败重试

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 服务异步通讯 文章目录微服务框架服务异步通讯50 消息可靠性50.4 失败重试机制50.4.1 消费者失败重试50 消息可靠性 50.4 失败重试机制 50…

可路由计算引擎实现前置数据库

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作者&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3…

非零基础自学Golang 第9章 结构体 9.1 理解结构体 9.2 定义结构体 9.3 实例化结构体

非零基础自学Golang 文章目录非零基础自学Golang第9章 结构体9.1 理解结构体9.2 定义结构体9.3 实例化结构体9.3.1 标准实例化9.3.2 new函数实例化9.3.3 取地址实例化9.3.4 访问成员第9章 结构体 在Go语言官网的常见问题解答一栏中&#xff0c;有这样一个问题&#xff1a;“Is…

Fiddler(7):fiddler设置弱网测试

弱网测试 概念&#xff1a;弱网看字面意思就是网络比较弱&#xff0c;我们通称为信号差&#xff0c;网速慢。 意义&#xff1a;模拟在地铁、隧道、电梯和车库等场景下使用APP &#xff0c;网络会出现延时、中断和超时等情况。 Fiddler弱网测试流程&#xff1a; 一、限速操作…

基于云开发的微信小程序、QQ小程序详细教程(更新中)

云开发解决方案 小程序云开发解决方案 为企业和开发者提供一站式后端云服务&#xff0c;无需管理基础架构&#xff0c;一次开发多端运行&#xff0c;腾讯云和微信联合出品。 云开发&#xff08;Tencent CloudBase&#xff0c;TCB&#xff09;是腾讯云提供的云原生一体化开发环…

数据结构---大整数相加

大整数相加列竖式运算第一步第二步第三步第四步JAVA实现给出两个很大的整数&#xff0c;要求实现程序求出两个整数之和。 记得这个题目我大二ACM课程老师讲过&#xff0c;但是忘记了。。。。。。。。。。 列竖式运算 程序不可能通过一条指令计算出两个大整数之和&#xff0c;…

【学习打卡04】可解释机器学习笔记之Grad-CAM

可解释机器学习笔记之Grad-CAM 文章目录可解释机器学习笔记之Grad-CAMGrad-CAM介绍Grad-CAM是CAM的泛化形式Gard-CAM可视化结果Grad-CAM算法的优点Grad-CAM算法的缺点Grad-CAM变种Grad-CAMScore-CAMLayer-CAM思考与总结参考阅读首先非常感谢同济子豪兄拍摄的可解释机器学习公开…

SAP S4 FICO 固定资产模块后台配置详解

1. 概述 资产会计&#xff08;FI-AA&#xff09;作为总帐模块&#xff08;FI-GL&#xff09;的子分类帐&#xff0c;对企业的固定资产、无形资产、在 建工程、低值易耗品、长期待摊、从购置、资本化、折旧、调拨到出售/报废的整个生命周期 进行全过程的管理&#xff0c;并和…

java实现给微信群中定时推送消息

大家好&#xff0c;我是雄雄。 前言 上一篇&#xff0c;我们介绍了如何通过调用接口的方式&#xff0c;将每日新闻发送到自己的博客中。我们会发现&#xff0c;将新闻以文章的形式发布&#xff0c;并且相关内容按照markdown的形式进行格式调整&#xff0c;有需要的可以点击这里…

获取小程序生产、开发、体验等环境、版本信息、appid等信息

if (typeof __wxConfig "object"){const version __wxConfig.envVersion;console.log("当前环境:" version)if (version "develop"){cosole.log(测试 开发环境)}else if (version "trial"){cosole.log(测试 体验版)}else if (versio…

【电力系统】基于YALMIP+CPLEX求解带储能的微电网优化调度问题附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

【树莓派不吃灰】兄弟连篇② 文件编辑器vim与RPM软件包管理、yum

目录1、文件编辑器Vim1.1 工作模式1.2 插入命令1.3 定位命令1.4 删除命令1.5 复制和剪切命令1.6 替换和取消命令1.7 搜索和搜索替换命令1.8 保存和退出命令1.9 使用技巧2、yum包管理2.1 网络yum源2.2 yum命令2.3 rpm包与源码包安装位置❤️ 博客主页 单片机菜鸟哥&#xff0c;一…

联盛德W801开发板流水灯示例

联盛德W801开发板流水灯示例&#x1f4fa;&#x1f4fd;&#x1f39e;&#x1f3ac;本实验通过利用开发板中间的7个led&#xff0c;控制对应的IO实现流水灯效果。 &#x1f4dc;W801 32位WiFi蓝牙双模SoC开发板 &#x1f6e0;开发工具以及示例Demo工程 参考&#xff1a;《W801…

【数学模型】基于ARMR模型模拟风速附matlab完整代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

图计算的学习与思考

好的软件不是靠程序分析、查错查出来的&#xff0c;而是由正确的人构建出来的。图成为日益重要的运算对象&#xff0c;图结构是对群体关系的一种抽象&#xff0c;可以描述丰富的对象和关系。图计算的核心是如何将数据建模为图结构以及如何将问题的解法转化为图结构上的计算问题…

MySQL高级【存储引擎】

目录 1&#xff1a;Mysql体系结构图&#xff1a; 2&#xff1a;存储引擎简介 3&#xff1a;存储引擎特点 InnoDB存储引擎&#xff1a; MyISAM存储引擎&#xff1a; Memory存储引擎&#xff1a; 4&#xff1a;存储引擎选择 5&#xff1a;存储引擎小结 1&#xff1a;Mysq…