赞
踩
本文将从零集中介绍React Redux、Redux Toolkit、redux-persist的使用,全文将以最简单的方式介绍,以便快速上手。
首先,确保你已经安装了
Node.js
和npm或yarn
。然后,在项目的根目录下运行以下命令来安装React Redux、Redux Toolkit、redux-persist。
# 如果使用npm
npm install react-redux @reduxjs/toolkit redux-persist
# 如果使用yarn
yarn add react-redux @reduxjs/toolkit redux-persist
目前这里最新的版本为:
"react-redux": "^9.1.0",
"@reduxjs/toolkit": "^2.2.1",
"redux-persist": "^6.0.0",
目录结构如下:
src
├─ store
├─ modules
└─ users.js
└─ index.js
├─ App.js
└─ index.js
在
store/modules/users.js
文件中进行
这里会以代码注释的形式进行说明
// 1. 导入Reduxjs Toolkit中的createSlice方法
import { createSlice } from '@reduxjs/toolkit';
// 2. 创建一个名为users的slice
const usersSlice = createSlice({
name: 'users',
initialState: {
list: [],
count: 0,
},
reducers: {
// 定义一个名为increment的action 因为是同步方法 支持直接修改state
increment: (state) => {
// 更新state.count为state.count + 1
state.count++;
},
decrement: (state) => {
// 更新state.count为state.count - 1
state.count--;
},
// 定义一个名为incrementByAmount的action
incrementByAmount: (state, action) => {
// 更新state.count为state.count + action.payload
state.count += action.payload;
},
// 定义一个名为setUsers的action
setUsers: (state, action) => {
// 更新state.list为action.payload
state.list = action.payload;
},
},
})
// 3. 解构出来的actionCreater函数
const { increment, decrement, incrementByAmount, setUsers } = usersSlice.actions;
// 模拟异步返回数据
const _callQueryResult = () => {
const start = new Date().getTime();
function _generateRandomNumber () {
return Math.floor(Math.random() * 1000); //生成0到100之间的随机数
}
return new Promise(resolve => {
console.log('%c\n--------响应开始--------', 'color:green;');
setTimeout(() => {
const end = new Date().getTime();
let arr = []
// 生成五个随机数
for (let index = 0; index < 5; index++) {
arr.push(_generateRandomNumber())
}
console.log(`%c--------响应结束--------\n耗时${end - start}ms\n${arr}`, 'color:red;');
resolve(arr)
}, 1000)
})
}
// 异步请求数据
const fetchUsers = () => async (dispatch) => {
// 发送异步请求
const data = await _callQueryResult();
// 派发action,更新state.list
dispatch(setUsers(data));
};
// 4. 以按需导出的方式导出actionCreater
export {
increment,
decrement,
incrementByAmount,
fetchUsers
}
// 5. 以默认导出的方式导出reducer
export default usersSlice.reducer;
在
store/index.js
文件中进行配置
这里会以代码注释的形式进行说明声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/510740
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。