首页 > 其他分享 >介绍使用@reduxjs/toolkit工具包发送异步请求最简便的方式

介绍使用@reduxjs/toolkit工具包发送异步请求最简便的方式

时间:2024-11-01 09:51:02浏览次数:6  
标签:reduxjs toolkit 工具包 js state home import store const

 1、安装@reduxjs/toolkit工具包

pnpm i @reduxjs/toolkit react-redux

2、在src文件夹下新建store文件夹

3、在store文件夹下新建index.js文件作为store的入口文件,其次再新建homeReducer.js文件

4、homeReducer.js文件中写入以下代码

// 从 @reduxjs/toolkit 库中导入 createSlice 函数
import {createSlice} from "@reduxjs/toolkit";
// 从 home.js 文件中导入 getFruitsApi 函数
import {getFruitsApi} from "@/api/home.js";

// 创建一个 home reducer 的 slice
const homeSlice = createSlice({
  // 设置 slice 的名称
  name: "home",
  // 设置 slice 的初始状态
  initialState: {
    fruits: [],
    total: 0,
    pageNum: 1,
    pageSize: 10,
    listLoading: false,
  },
  // 设置 slice 的 reducers(用于修改state里面的数据)
  reducers: {
    getFruitList(state, {payload: {pageSum, data}}) {
      state.fruits = data
      state.total = pageSum
    },
    // 用于设置加载状态的reducer
    setLoading(state,{payload}){
      state.listLoading = payload
    }
  },
});
const {getFruitList,setLoading} = homeSlice.actions
//异步请求
// 导出一个异步函数
export const getFruits = () => async (dispatch, getState) => {
  const pageNum =  getState().home.pageNum
  const pageSize = getState().home.pageSize
  try {
    // 设置加载状态为 true
    dispatch(setLoading(true))
    // 调用 getFruitsApi 函数,获取数据列表
    const {pageSum, data} = await getFruitsApi(pageNum, pageSize)
    // 将获取到的数据列表存储到 state 中
    dispatch(getFruitList({pageSum, data}))
  }catch (e){
    // 如果发生错误,设置加载状态为 false
    dispatch(setLoading(false))
    // 返回错误信息
    return e
  }finally {
    // 无论是否发生错误,最后都将加载状态设置为 false
    dispatch(setLoading(false))
  }
}
// 导出 reducer
export default homeSlice.reducer;

5、在store文件夹下面的index文件中配置store并传入reducer,最后向外暴露 

import {configureStore} from "@reduxjs/toolkit";
import homeReducer from "@/store/homeSlice.js";
export default configureStore({
  reducer:{
   home:homeReducer
  }
})

6、在main.js文件中导入store并通过Provide组件将其传入

import { Provider } from "react-redux";
import store from "@/store";

ReactDOM.createRoot(document.getElementById("root")).render(
    <Provider store={store}>
          <App />
    </Provider>
);

7、最后再在组件中直接调用刚刚写好的异步函数就可以直接从服务器获取数据

import {useDispatch} from 'react-redux'
import {useEffect} from 'react'
// 导入getFruits函数
import { getFruits } from "@/store/homeSlice.js";
export default ()=>{
const dispatch = useDispatch()
useEffect(function(){
    dispatch(getFruits())
},[])
}

标签:reduxjs,toolkit,工具包,js,state,home,import,store,const
From: https://blog.csdn.net/weixin_47980952/article/details/143400059

相关文章

  • 《诛仙单机版系列一:六道轮回》安装教程|虚拟机一键端|GM工具包
    今天给大家带来一款单机游戏的架设:诛仙-六道轮回-五职业。游戏版本:v1.2.4只适用于单机娱乐,此教程是本人亲测所写,踩坑无数,如果你是小白跟着教程走也是可以搭建成功。  亲测视频演示https://githubs.xyz/show/289.mp4 游戏安装步骤此游戏架设需要安装虚拟机,没有虚拟机......
  • CommunityToolkit.Mvvm中的Ioc
    什么是Ioc在软件工程中,控制反转(IoC)是一种设计原则,其中计算机程序的自定义编写部分从外部源(例如框架)接收控制流。术语“反转”是历史性的:与过程式编程相比,具有这种设计的软件架构“反转”了控制。在过程式编程中,程序的自定义代码调用可重用库来处理通用任务,但在控制反转的情况下,是......
  • 2024最新最全【CUDA Toolkit 12.3】下载安装零基础教程【附安装包】_cuda12.3下载
    官网地址:这里CUDA是英伟达公司开发的一种并行计算平台和编程模型。它利用GPU的强大计算能力,加速各种数学和科学计算、数据分析、机器学习、计算机视觉等任务。CUDA包括CUDA编程语言、CUDA运行时库、NVIDIA显卡等组件。CUDA的编写方式分为两种:CUDAC/C++和CUDAFortran。开......
  • Watt Toolkit 报错:加速服务启动失败,443端口被 svnhttpsvc (4996) 占用
    问题描述WattToolkit(原名Steam++)启动加速时报错,显示443端口被svnhttpsvc(4996)占用了。svnhttpsvc是VisualSVNServer的一个应用程序,使用HTTPS协议,默认端口为443。在任务管理器(桌面底部任务栏右键打开)中搜索进程svnhttpsvc的PID4996可以看到svnhttpsvc是正......
  • 小白怎么入门CTF,看这个就够了(附学习笔记、靶场、工具包下载)
     CTF靶场:CTF刷题,在校生备战CTF比赛,信安入门、提升自己、丰富简历之必备(一场比赛打出好成绩,可以让你轻松进大厂,如近期的各种CTF杯),在职人员可以工作意外提升信安全技能。渗透实战靶场:挖洞、渗透实战(web、域、横向渗透),适合实战能力需要大幅度提升的同学。一、CTF入门最近很多......
  • HelixToolkit使用教程
    HelixToolkit使用总结:问题点:    3d光源    相机    网格信息1、配置HelixViewPort3d基本参数2、配置相机参数和相机位置:HelixViewPort3D.DefaultCamera    设置相机的放置方向和观看位置<hv:HelixViewport3D.DefaultCamera>......
  • 如何使用helixtoolkit对Mesh3D的每个点进行不同的着色?
    首先,HelixToolkit是一个开源的3D图形库,可以用于在WPF应用程序中创建交互式的3D视觉效果。而Mesh3D是HelixToolkit中用于呈现3D网格的类。要对Mesh3D的每个点进行不同的着色,可以通过以下步骤实现:创建一个用于呈现Mesh3D的场景。可以使用HelixViewport3D控件来承载3D场景。定义......
  • MixtralKit: 一个强大的Mixtral模型推理和评估工具包
    MixtralKitMixtralKit:探索Mixtral模型的强大工具包MixtralKit是一个专为MistralAI公司开发的Mixtral-8x7B-32KMoE模型设计的开源工具包。它为研究人员和开发者提供了一套完整的解决方案,用于探索、评估和应用这一强大的语言模型。本文将深入介绍MixtralKit的主要特性、使用方......
  • VS Code安装C#开发工具包并编写ASP.NET Core Web应用
    前言    前段时间微软发布了适用于VSCode的C#开发工具包(注意目前该包还属于预发布状态但是可以正常使用),因为之前看过网上的一些使用VSCode搭建.NETCore环境的教程看着还挺复杂的就一直没有尝试使用VSCode来编写.NETCore。不过听说C#开发工具包提供了一系列功能和扩展,从而......
  • Unity ML-Agents: 革新游戏AI开发的开源工具包
    ml-agentsUnityML-Agents:革新游戏AI开发的开源工具包UnityML-Agents(MachineLearningAgents)是UnityTechnologies推出的一个开源项目,旨在将游戏和模拟环境转变为训练智能代理的平台。这个工具包为游戏开发者和AI研究人员提供了一个强大而灵活的框架,使他们能够轻松地在Un......