Redux 是一个用于 JavaScript 应用程序的状态管理库。它简单来说就是管理应用程序的状态。
Redux Toolkit TypeScript 提供了一种现代化且类型安全的方式来使用 Redux,是开发复杂前端应用时的一个强大工具
第一步 安装依赖包
# npm
npm install @reduxjs/toolkit react-redux
# yarn
yarn add @reduxjs/toolkit react-redux
第二步 在src页面里面创建一个(store)文件夹 里面包含index.js 和 module文件夹
准备工作已经完毕下面正式开始操作
定义根 State 和 Dispatch 类型
import { configureStore } from '@reduxjs/toolkit'
// 引入module文件夹下的js文件
import Table = './module/table.js'
const store = configureStore({
reducer: {
table:Table //table是我自定义的 reducer 函数 引入Table里面的方法
}
})
//RootState 是一个对象,包含了 table 状态的类型
export type RootState = ReturnType<typeof store.getState>
// Redux store 的 dispatch 函数用于分发 action 到 reducers,触发状态的更新。
export type AppDispatch = typeof store.dispatch
定义 Hooks 类型
在src下面创建一个utils/hooks.ts文件
import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux'
// 把RootState跟AppDispatch引入
import type { RootState, AppDispatch } from '../store/index'
// 在整个应用程序中使用,而不是简单的 `useDispatch` 和 `useSelector`
export const useAppDispatch: () => AppDispatch = useDispatch
export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector
useAppDispatch 是 react-redux
提供的用于获取 Redux dispatch 函数的 React 钩子。在这里,通过 export const useAppDispatch: () => AppDispatch = useDispatch;
将 useDispatch
导出并赋予类型 AppDispatch
,即 Redux store 的 dispatch 函数的类型。这样做的好处是,在整个应用程序中可以使用 useAppDispatch
来获取类型安全的 dispatch 函数,而不需要每次都显式地调用 useDispatch
我对
useAppDispatch的理解就是引用store/module/table.js下的方法并进行处理
useAppSelector的理解就是把仓库里的数据给拿到页面上来进行使用
定义 slice state 和 action 类型
在src/module/table.js中搭建
import { createSlice } from '@reduxjs/toolkit'
const tableSclice = createSlice({
name: 'table',
// 初始数据
initialState: {
},
//修改数据的方法 可以直接去修改它
reducers: {
//方法
}
})
//导出 按需导出actions 和 reducer
export const { } = tableSclice.actions
export default tableSclice.reducer
最后在全局引入模块
- 从
./store
导入store
,这是我的 Redux store 中的设置。 - 从
react-redux
中导入Provider
,用于将 Redux 与 React 集成
<Provider store={store}>
将 Redux 的store
包装在我的<App />
组件外部,以便在整个应用程序中提供 Redux 的状态。
使用方法
搭建工作完成之后就该对他进行使用了
先在页面中引入useAppDispatch
再获取 useAppDispatch
钩子返回的 AppDispatch
类型的 dispatch
函数
addList就是table.js下的方法 简单来说就是把dataList这个数据放到addList这个方法里面进行处理
table.js文件 在addList方法里处理完后按需导出actions
最后再利用useAppSelector在页面上使用
这样就实现了通过useAppDispatch把数据存放到store里面,然后在通过useAppSelector把存放在store里面的数据拿出来
在reducers方法里面可以对数据进行处理,比如增删改查等之类的都可以进行处理,想用的时候直接拿出来
这样我们能够通过更少的代码实现更多的功能,减少了样板代码和手动类型定义的工作量。这不仅提高了开发效率,还确保了代码的可读性、可维护性和可扩展性,从而提升了整体的代码质量。