React全局状态管理

news/2024/10/22 15:36:30/

          redux是一个状态管理框架,它可以帮助我们清晰定义state和处理函数,提高可读性,并且redux中的状态是全局共享,规避组件间通过props传递状态等操作。

快速使用

          在React应用的根节点,需要借助React的Context机制存放整个store信息。需要进行以下配置。

index.js

import React from 'react'
import ReactDOM from 'react-dom'import {Provider} from 'react-redux'
import {store} from './store'
import App from './app'const rootElement = document.getElementById('root');ReactDOM.render(<Provider store = {store}><App/></Provider>,rootElement)

        store文件需要配置下Redux,包括reducer和action以及state

store.js

import {createStore} from 'redux'const initialState = {value: 0}// Reducer
function counterReducer(state = initialState, action){switch (action.type){case 'counter/incremented':return {value: state.value + 1};case 'counter/decremented':return {value: state.value - 1};default:return state}
}// Action
export const incrementAction = {type:'counter/incremented'}
export const decrementAction = {type: 'counter/decremented'}// Redux 定义
export const store = createStore(counterReducer)

在业务逻辑中,需要通过useSelector和useDispatch自定义hook获取state和dispatch

Counter.js

import React from 'react'
import {useDispatch, useSelector} from 'react-redux'
import {decrementAction, incrementAction} from "./store";export function Counter() {const count = useSelector(state => state.value)const dispatch = useDispatch()return (<div><button onClick={() => dispatch(incrementAction)}>+</button><span>{count}</span><button onClick={() => dispatch(decrementAction)}>-</button></div>)}

使用效果


http://www.ppmy.cn/news/1323810.html

相关文章

Leetcode2596. 检查骑士巡视方案

Every day a Leetcode 题目来源&#xff1a;2596. 检查骑士巡视方案 解法1&#xff1a;广度优先搜索 这是有点特殊的广度优先搜索&#xff0c;每个位置需要搜索 8 个方向&#xff0c;但最终只选择其中的一个方向走下去。 所以不需要使用队列&#xff0c;也不需要标记数组&…

Win10电脑关闭OneDrive自动同步的方法

在Win10电脑操作过程中&#xff0c;用户想要关闭OneDrive的自动同步功能&#xff0c;但不知道具体要怎么操作&#xff1f;首先用户需要打开OneDrive&#xff0c;然后点击关闭默认情况下将文档保存到OneDrive选项保存&#xff0c;最后关闭在这台电脑上同步设置保存就好了。接下来…

【江科大STM32合集】day2按键控制LED光敏传感器控制峰鸣器

【STM32合集】day2按键控制LED&光敏传感器控制峰鸣器 电路基础c语言基础main.ckey.c结果 实现一个键开关灯实验结果避坑 电路基础 运算放大器-在江科大51单片机b站视频&#xff08;AD/DA&#xff09;复习 原理&#xff1a;两个极端 同相输入端电压 》反相输入端 电压输出最…

Pytorch各种Dropout层应用于详解

目录 torch框架Dropout functions详解 dropout 用途 用法 使用技巧 参数 数学理论公式 代码示例 alpha_dropout 用途 用法 使用技巧 参数 数学理论公式 代码示例 feature_alpha_dropout 用途 用法 使用技巧 参数 数学理论 代码示例 dropout1d 用途 用…

selinux简介

Selinux使用详解 注&#xff1a;redhat selinux使用说明文档&#xff1a;使用 SELinux Red Hat Enterprise Linux 8 | Red Hat Customer Portal 1、说明 selinux&#xff08;security enhanced linux安全性增强的linux&#xff09; 由美国安全局nsa&#xff08;national se…

HTML中常用标签--详解

目录 1.b/strong标签 2.i/em 标签 3.u标签 4.del删除线 5.br换行 6.p标签 * 7.pre 预处理标签 8.span标签** 9.div标签*** 10.sub标签 11.sup标签 12.hr标签 13.hn标签 14.HTML5中语义标签 特殊字符 15.多媒体标签 img*** a 标签*** 第一种用法&#xff1a;…

知识笔记(八十四)———链式语句中fetchSql和force和bind用法

fetchSql&#xff1a; fetchSql用于直接返回SQL而不是执行查询&#xff0c;适用于任何的CURD操作方法。 例如&#xff1a; $result Db::table(think_user)->fetchSql(true)->find(1);输出result结果为&#xff1a; SELECT * FROM think_user where id 1 force&#…

rust嵌入式开发补充

本文是对rust嵌入式开发的补充&#xff0c;就当时遗留的一些问题进行增补与修正。 RTIC中的任务处理 在上篇文章中还不是很理解rtic的工作机制。但写东东进行总结的好处就体现出来了&#xff0c;在上篇文章中提到了rtic的app入口本就是一个进程宏&#xff0c;所以在写完文章后…