# reduxjs-toolkit **Repository Path**: duans/reduxjs-toolkit ## Basic Information - **Project Name**: reduxjs-toolkit - **Description**: @reduxjs/toolkit 工具库的使用介绍 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-24 - **Last Updated**: 2023-06-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # @reduxjs/toolkit使用介绍 > @reduxjs/toolkit是一个操作redux状态管理工具的工具库, 目的是简化开发者操作redux状态管理工具的代码, 让redux使用起来更方便一些. > @reduxjs/toolkit中内置了redux, redux-thunk(异步中间件), reselect, redux-devtools-extension调试工具, 所以这些依赖无需安装, 因为它们已经作为@reduxjs/toolkit的依赖项,在安装@reduxjs/toolkit的时候已经安装过了 ## 安装 > 无需在项目中单独安装redux, redux-thunk, reselect, 因为@reduxjs/toolkit中已经包含了这些依赖项 ```jsx npm i @reduxjs/toolkit ``` ## @reduxjs/toolkit核心方法 ### sliceStore - 作用: 按照分片(分组)方式创建reducer函数 - 语法: > /store/newsSlice.js ```jsx import {sliceStore} from '@reduxjs/toolkit'; const newsSlice=sliceStore({ // 分片名称 name:'cart', // 状态数据初始值 initialState:{ newsList:[] }, // reducer函数内部`case`分支, 每一个case单独声明一个方法即可 reducers:{ // 初始化新闻列表 // state: 系统参数, 状态数据对象 // payload: 额外参数(数据载荷) newsListInit(state,payload){ // 该方法内部允许直接修改state state.newsList=payload; } } }); // 导出对应的actionCreators export const { newsListInit }=newsSlice.actions; // 导出reducer函数 export default newsSlice.reducer; ``` ### configStore - 作用: 创建redux数据存储对象 - 用法: ```jsx import {configStore} from '@reduxjs/toolkit'; // 导入分片reducer函数 import newsReducer from './store/newsSlice'; // 导入redux-logger中间件 import logger from 'redux-logger'; const store=configStore({ // 注册reducer函数 reducer:{ news:newsReducer }, // 注册redux中间件, 比如redux-loggerr middleware:[logger] }); // 导出redux数据存储对象 export default store; ``` ### createAction - 作用: 创建`actionCreator` - 语法: ```jsx import {createAction} from '@reduxjs/toolkit'; // 创建actionCreator方法 // 其返回值为: {type:'counter/increment',payload} const increment = createAction('counter/increment'); const decrement = createAction('counter/decrement'); // 其执行结果为 {type:'counter/increment',payload:10} const action=increment(10); ``` ### createReducer - 作用: 创建reducer函数 - 用法: ```jsx import { createAction, createReducer } from '@reduxjs/toolkit' // 创建actionCreator方法, 转换为字符串的结果为传入参数,即actionType const increment = createAction('counter/increment') const decrement = createAction('counter/decrement') // 0: 表示状态数据初始值 // builder: 是系统在createReducer中自动注入的一个参数, 该参数对象中包含了一个方法addCase, 可以实现向reducer函数中添加case分支 const counterReducer = createReducer(0, (builder) => { // 当组件中通过dispatch触发了increment, 则会执行如下代码 builder.addCase(increment, (state, action) => state + action.payload) // 当组件中通过dispatch触发了decrement, 则会执行如下代码 builder.addCase(decrement, (state, action) => state - action.payload) }) ``` ### useStore - 作用: 在函数组件中获取redux数据存储对象store - 语法: ```jsx import {useStore} from '@reduxjs/toolkit'; function FunComponent(){ // 获取redux数据存储对象 const store=useStore(); return <>