React-redux ReduxToolkit 的使用和封装 如何同步和异步修改initialState内的数据 超详细说明

ReduxToolkit是官方推荐的Redux开发工具包,它简化了store创建、reducer管理和异步操作。通过configureStore可以方便地配置store,createSlice用于创建reducer并自动生成actions,createAsyncThunk则支持异步操作。文章详细介绍了如何使用这些API,并展示了如何在React应用中通过Provider共享store数据。

目录

认识Redux Toolkit

安装Redux Toolkit:

 Redux Toolkit的核心API主要是如下几个:

configureStore:

createSlice:

createAsyncThunk:

store的创建

 将 store 内的数据 在app组件内共享

重构代码 – 创建counter的reducer

reducers 官方推荐同步修改 initialState 方法

使用 connect 函数将 store 内的数据映射到组件 props内

Redux Toolkit的异步操作

 extraReducer的另外一种写法

使用 hooks 操作redux-toolkit 


认识Redux Toolkit

        Redux Toolkit 是官方推荐的编写 Redux 逻辑的方法。

        redux的编写逻辑过于的繁琐和麻烦。

        并且代码通常分拆在多个文件中(虽然也可以放到一个文件管理,但是代码量过多,不利于管理);

        Redux Toolkit包旨在成为编写Redux逻辑的标准方式,从而解决上面提到的问题;

        在很多地方为了称呼方便,也将之称为“RTK”;

安装Redux Toolkit:

npm install @reduxjs/toolkit react-redux

yarn add  @reduxjs/toolkit react-redux

pnpm install @reduxjs/toolkit react-redux

 Redux Toolkit的核心API主要是如下几个:

configureStore:

        包装createStore以提供简化的配置选项和良好的默认值。它可以自动组合你的 slice reducer,添加你提供的任何 Redux 中间件,redux-thunk默认包含,并启用 Redux DevTools Extension。

createSlice:

        接受reducer函数的对象、切片名称和初始状态值,并自动生成切片reducer,并带有相应的actions。

createAsyncThunk:

        接受一个动作类型字符串和一个返回承诺的函数,并生成一个pending/fulfilled/rejected基于该承诺分派动作类型的 thunk。

store的创建

        configureStore用于创建store对象,常见参数如下:

        reducer,将slice中的reducer可以组成一个对象传入此处;

        middleware:可以使用参数,传入其他的中间件;

        devTools:是否配置devTools工具,默认为true;

        在 src 目录下创建一个store 文件夹 文件夹内创建 index.js 文件

// npm install @reduxjs/toolkit react-redux -S
import { configureStore } from '@reduxjs/toolkit'
// 导入 namesReducer 进行使用
import namesReducer from './features/names'
import asyncListReducer from './features/asyncList'

const store = configureStore({
  reducer: {
    names: namesReducer,
    asyncList: asyncListReducer
  },
  // reduxjs/toolkit 默认是已经集成了 redux-thunk 和 redux-devtool 如果需要添加其他中间件可以使用middleware参数,传入其他的中间件
  // middleware: [thunk, logger],

  // 是否配置 devTool 工具,默认为 true 开发环境建议 true 生产环境建议 false
  devTools: true
})

export default store

 将 store 内的数据 在app组件内共享

使用 react-redux 给我们提供的 Provider 包裹 App 组件 传入store 进行数据共享

import { Provider } from 'react-redux'
import store from './Redux-Toolkit的使用/store'
import App from './Redux-Toolkit的使用/App'

// 编写 react 代码,并且通过 React 渲染出来对应的内容
const root = ReactDOM.createRoot(document.querySelector('#root'))
root.render(
  <Provider store={store}>
    <App name={'HachimanC'} />
  </Provider>
)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值