React-Redux中actions

一、同步actions

1.概念

说明:在reducers的同步修改方法中添加action对象参数,在调用actionCreater的时候传递参数,数会被传递到action对象payload属性上。

2.reducers对象

说明:声明函数同时接受参数

const counterStore=createSlice({name:"counter",// 初始化状态initialState:{count:0},// 修改状态的方法 同步方法reducers:{addToNum(state,action){state.count+=action.payload}}
})
// 解构actionCreater函数
const {addToNum}= counterStore.actions
// 获取reducer
const reducer=counterStore.reducer// 按需导出actionCreator
export {addToNum}// 以默认导出的方式导出reducer
export default reducer

3.app.js

说明: 导入函数进行调用。

import { useDispatch, useSelector } from "react-redux";
import {addToNum} from "./store/modules/counterStore"
function App() {const {count}=useSelector(state=>state.counter)const dispatch=useDispatch()return (<div className="App"><button onClick={()=>dispatch(addToNum(10))}>add To 10</button></div>);
}export default App;

二、异步actions

1.channelStore.js

import {createSlice} from "@reduxjs/toolkit"
import axios from 'axios'
// 1.创建store写法保持不见,配置好同步修改状态的方法
const channelStore= createSlice({name:'channel',initialState:{channelList:[]},reducers:{setChannels(state,action){state.channelList=action.payload}}
})// 异步请求
const {setChannels}=channelStore.actionsconst fetchChannelList=()=>{return async(dispatch)=>{await axios.get('https://st2msh.laf.run/react_get_list').then(res=>{dispatch(setChannels(res.data))}).catch(err=>{console.log(err);})}
}export {fetchChannelList}
const reducer=channelStore.reducerexport default reducer

2. index.js

import { configureStore} from "@reduxjs/toolkit"
// 导入子模块reducer
import counterReducer from "./modules/counterStore"
import channelReducer from "./modules/channelStore"const store=configureStore({reducer:{counter:counterReducer,channel:channelReducer}
})export default store

3.app.js

import { useDispatch, useSelector } from "react-redux";
import {inscrement,decrement,addToNum} from "./store/modules/counterStore"
import {fetchChannelList} from "./store/modules/channelStore"
import { useEffect } from "react";
function App() {const {count}=useSelector(state=>state.counter)const {channelList}=useSelector(state=>state.channel)const dispatch=useDispatch()useEffect(()=>{dispatch(fetchChannelList())},[dispatch])return (<div className="App">{count}<button onClick={()=>dispatch(inscrement())}>+</button><button onClick={()=>dispatch(decrement())}>-</button><button onClick={()=>dispatch(addToNum(10))}>add To 10</button><ul>{channelList.map(item=><li key={item.id}>{item.name}</li>)}</ul></div>);
}export default App;

4.效果展示

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基础篇--学习记录2

1.深浅拷贝 l1 ["张大仙","徐凤年",["李淳刚","邓太阿"]] # 变量名对应的就是内存地址,这里就是将l1的内存地址给了l2 # 现在两个变量指向同一个内存地址,l1变化l2也会变化 l2 l1 现在的需求是l2是l1的拷贝版本,但是两者是完全分割…

【C++】C++模板基础知识篇

个人主页 &#xff1a; zxctscl 文章封面来自&#xff1a;艺术家–贤海林 如有转载请先通知 文章目录 1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板3.1 类模板的定义格式3.2 类模板的实例化…

3DES算法的起源与演进:保障信息安全的重要里程碑

title: 3DES算法的起源与演进&#xff1a;保障信息安全的重要里程碑 date: 2024/3/8 21:25:19 updated: 2024/3/8 21:25:19 tags: 3DES算法起源安全性增强三次迭代加密密钥管理复杂效率对比AES应用场景广泛Python实现示例 一、3DES算法的起源与演进 3DES算法是DES算法的增强版…

Golang基于Redis bitmap实现布隆过滤器(完结版)

Golang基于Redis bitmap实现布隆过滤器&#xff08;完结版&#xff09; 为了防止黑客恶意刷接口&#xff08;请求压根不存在的数据&#xff09;&#xff0c;目前通常有以下几种做法&#xff1a; 限制IP&#xff08;限流&#xff09;Redis缓存不存在的key布隆过滤器挡在Redis前 …

Linux运维:实现光盘开机自动挂载、配置本地yum源教程

Linux运维&#xff1a;实现光盘开机自动挂载、配置本地yum源教程 一、光盘开机自动挂载1、检查光驱设备2、创建挂载点3、编辑/etc/fstab文件4、测试挂载 二、配置本地yum源(挂载光盘或ISO文件)1、挂载ISO文件2、创建YUM仓库配置文件3、清理YUM缓存并测试 &#x1f496;The Begi…

【缺陷报告】缺陷报告怎样写会好一些?

标题 1. 首先要做一个“标题党”&#xff08;此标题党非彼标题党&#xff09;。标题一定要清晰简洁易理解&#xff0c;不应该臃长 2. 尽量前缀要规范&#xff0c;例如模板&#xff1a; [Product][Version]_[Feature]_[Title]&#xff0c;这样描述会很清晰&#xff0c;也方便查找…

测试用例编写详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、概念 测试用例的基本概念&#xff1a; 测试用例&#xff…

[PTA] 分解质因子

输入一个正整数n&#xff08;1≤n≤1e15&#xff09;&#xff0c;编程将其分解成若干个质因子&#xff08;素数因子&#xff09;积的形式。 输入格式: 任意给定一个正整数n&#xff08;1≤n≤1e15&#xff09;。 输出格式: 将输入的正整数分解成若干个质因子积的形式&#…

Spring学习 基础(二)Bean和AOP

3、Spring Bean Bean 代指的就是那些被 IoC 容器所管理的对象&#xff0c;我们需要告诉 IoC 容器帮助我们管理哪些对象&#xff0c;这个是通过配置元数据来定义的。配置元数据可以是 XML 文件、注解或者 Java 配置类。 Bean的创建方式 1. XML 配置文件&#xff1a; 传统上&am…

2024蓝桥杯每日一题(前缀和)

一、第一题&#xff1a;壁画 解题思路&#xff1a;前缀和贪心枚举 仔细思考可以发现B值最大的情况是一段连续的长度为n/2上取整的序列的累加和 【Python程序代码】 import math T int(input()) for _ in range(1,1T):n int(input())s input()l math.ceil(len(s)/…

DeepLearning in Pytorch|我的第一个NN-共享单车预测

目录 概要 一、数据准备 导入数据 数据可视化 二、设计神经网络 版本一 版本二&#xff08;正片&#xff09; 三、测试 小结 概要 我的第一个深度学习神经网络模型---利用Pytorch设计人工神经网络对某地区租赁单车的使用情况进行预测 输入节点为1个&#xff0c;隐含…

AI数据分析软件-BeepBI的诞生结束了传统BI时代,引领了数据分析零门槛的时代

#AI数据分析# 随着人工智能(AI)的日益成熟&#xff0c;数据分析领域正迎来一场革命性的变革。在这场变革中&#xff0c;DeepBI凭借实现了用ai数据分析&#xff0c;与传统BI工具相比&#xff0c;展现出了前所未有的便捷性和易上手特性&#xff0c;真正实现了数据分析的零门槛。…