@reduxjs/toolkit的理解,和react-redux有什么区别?

1、React-redux是官方react UI绑定层,允许React组件从redux存储中读取数据,并将操作分派到存储以更新的状态。提供了connect,Provider等API,帮助我们连接react和redux,实现的逻辑会更加的严谨高效

2、@reduxjs/tookit是对Redux的二次封装,开箱即用的一个高效的Redux开发工具,使得创建store,更新store

  区别

  1、reduxjs/tookit相对于react-redux来说比较方便,集成了redux-devtools-extension,不需要额外的配置,非常方便

  2、reduxjs/tookit集成immutable-js的功能,不需要安装配置使用,提升了开发效率

  3、reduxjs/tookit集成了redux-thunk的功能

  4、reduxjs/tookit将types、actions、reducers放在一起组成了全新的slices,简化了我们的使用

```

### 集成 Redux Toolkitredux-persist 在 TypeScript 中 为了实现 Redux Toolkit `redux-persist` 的集成,在项目中需安装必要的依赖包。通过命令行工具可以轻松完成这些操作: ```bash npm install @reduxjs/toolkit react-redux redux-persist persist-rehydrate ``` 创建 store 文件时,应配置持久化存储逻辑并定义根 reducer。下面是一个完整的例子来展示如何设置这一过程[^1]。 #### 创建 Store 并应用 Middleware 在文件顶部引入所需的模块之后,使用 `configureStore()` 方法来自动生成带有中间件支持的标准 Redux 商店实例。这里特别要注意的是加入了 `createWrapper` 来处理服务器端渲染的情况以及 `persistReducer` 函数用于指定哪些部分的数据需要被保存到本地缓存中。 ```typescript // src/store.ts import { configureStore } from '@reduxjs/toolkit'; import { persistStore, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, } from 'redux-persist'; const rootReducer = (state: any, action: AnyAction) => { switch (action.type) { case CLEAR_STORAGE: state = undefined; break; default: break; } return appReducer(state, action); }; export const makeStore = () => configureStore({ reducer: persistedReducer, middleware: getDefaultMiddleware => getDefaultMiddleware({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], }, }), }); let store = makeStore(); export const wrappper = createWrapper(makeStore); export type RootState = ReturnType<typeof store.getState>; export type AppDispatch = typeof store.dispatch; export default store; ``` #### 定义 Root Reducer 及 Persist Config 接着要做的就是编写 root reducer 负责管理整个应用程序的状态树结构;同时也要设定好 `persistConfig`, 这样才能告诉 `redux-persist` 哪些数据应该被永久保留下来。对于敏感信息不建议进行持久化处理以免造成安全隐患。 ```typescript // src/reducers/rootReducer.ts import storage from 'redux-persist/lib/storage'; // defaults to localStorage for web import { combineReducers } from '@reduxjs/toolkit'; import { persistReducer } from 'redux-persist'; import userSlice from './userSlice'; const persistConfig = { key: 'root', version: 1, storage, blacklist: ['sensitiveData'], // 不会持久化的reducer名称数组 }; const reducers = combineReducers({ user: userSlice.reducer, }); const persistedReducer = persistReducer(persistConfig, reducers); export default persistedReducer; ``` 最后一步是在组件内部连接 React 应用程序新建立好的 Redux 存储库之间关系。这通常涉及到提供者模式的应用,即包裹顶层组件以使所有子级都能访问全局状态。 ```jsx // src/index.jsx 或 index.tsx import React from 'react'; import ReactDOM from 'react-dom/client'; import { Provider } from 'react-redux'; import { PersistGate } from 'redux-persist/integration/react'; import { store, persistor } from './store'; import App from './App'; const container = document.getElementById('app'); if (!container) throw new Error('Failed to find the root element'); const root = ReactDOM.createRoot(container); root.render( <Provider store={store}> <PersistGate loading={<div>Loading...</div>} persistor={persistor}> <App /> </PersistGate> </Provider>, ); ``` 这样就完成了 Redux Toolkit 结合 `redux-persist` 实现简单而强大的前端状态管理持久化方案的搭建工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值