前端
PythonJava运维数据库
状态管理
状态管理
  • 🖥️Redux Tookit
    • Introduction
      • 介绍
    • Tutorials
      • 🖥️快速开始
      • 🏐在TypeScript环境使用
    • Using Redux toolkit
      • 使用Immer编写Reducers
      • 性能与数据范式化
      • 异步逻辑与数据请求
      • Usage With TypeScript
    • API Refrence
      • Store Setup
        • configureStore
        • getDefaultMiddleware
        • Immutability Middleware
        • Serializability Middleware
        • Action Creator Middleware
        • createListenerMiddleware
        • createDynamicMiddleware
        • getDefaultEnhancers
        • autoBatchEnhancer
      • Reducer and Actions
        • createReducer
        • createAction
        • createSlice
        • createAsyncThunk
        • createEntityAdapter
        • combineSlices
      • Other
        • createSelector
        • Matching Utilities
    • RTX Query
      • RTK Query Overview
      • Comparson with Other Tools
      • Examples
      • Usage With TypeScript
      • Using RTK Query
        • Queries
        • Mutations
      • API Refrence
        • createApi
        • fetchBaseQuery
        • ApiProvider
        • setupListeners
        • Generated API Slices
          • Generated API Slices
          • Redux Integration
          • Endpoints
          • Code Splitting
          • Utilities
          • React Hooks
  • 🚚Redux-Saga
    • 入门
    • 基础概念
    • API
    • 技巧
  • 🚑React Redux
    • 安装
    • 教程
    • 使用 React Redux
    • API 参考
  • 🚕生态
    • Redux Persist
    • zustand
      • 使用 useShallow 防止重新渲染
由 GitBook 提供支持
在本页
  • 安装
  • 创建Redux Store
  • 为React提供Redux Store
  • 创建Redux State Slice
  • 将slice Reducers 添加到 Store 中
  • 在React组件中使用Redux状态和操作
  • 完整的计数器应用示例

这有帮助吗?

  1. Redux Tookit
  2. Tutorials

快速开始

安装

添加@reduxjs/toolkit和react-redux依赖包到你的项目中:

pnpm add @reduxjs/toolkit react-redux

创建Redux Store

从 Redux Toolkit 中引入configureStore API,创建一个空的 Redux store,并且导出它。

import { configureStore } from "@reduxjs/toolkit"
​
export default configureStreactore({
  reducer: {}
})

为React提供Redux Store

import React from "react"
import ReactDom from "react-dom"
import App "./App"
import store from "./store"
import { Provider } from "react-redux"
​
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
  <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provide>
  </React.StrictMode>,
)

创建Redux State Slice

创建 slcie 需要一个字符串名称来标示切片,一个初始 state 以及一个或多者定义了该如何更新 state 的reducer函数。slcie 创建后,我们可以导出 slice 中生成的 Redux action creators 和 reducer 函数。

import { createSlcie } from "@reduxjs/toolkit"
​
export const counterSlcie = createSlcie({
  name: "counter",
  inititalState: {
    value: 0
  },
  reducers: {
    increment: state => {
      state.value += 1
    },
    decrement: state => {
      state.value -= 1
    },
    incrementByAmount: (state, action) => {
      state.value += action.payload
    }
  }
})
​
// 每个 case reducer 函数都会生成对应的 action creators
export const { increment, decrement, incrementByAmount } = counterSlcie.actions
​
export default counterSlice.reducer

将slice Reducers 添加到 Store 中

import { configureStore } from "@reduxjs/toolkit"
import counterReducer from "./counterSlice"
​
export default configureStore({
  reducer: {
    counterSlice: counterReducer
  }
})

在React组件中使用Redux状态和操作

import React from "react"
import { useSelector, useDispatch } from "react-redux"
import { decrement, increment } from "./store/counterSlice"
​
export function Counter() {
  const count = useSelector(state => state.counterSlice.value)
  const diapatch = useDispatch()
  
  return (
    <div>
      <span>{count}</span>
      <button onClick={() => dispatch(increment())}>Click</button>
    </div>
  )
}

完整的计数器应用示例

上一页Tutorials下一页在TypeScript环境使用

最后更新于2年前

这有帮助吗?

🖥️
🖥️