Redux Toolkit

前言:有關 Redux 基礎概念可以看上一篇

可以省去部分步驟,簡單地設定 Redux

安裝

yarn add react-redux redux @reduxjs/toolkit

使用步驟

1.設定 provider

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';

ReactDOM.render(
  <React.StrictMode>
    <Provider store={store}>
      <App />
    </Provider>
  </React.StrictMode>,
  document.getElementById('root'),
);

2.新增 store

/store/index.js

3.新增 redux-toolkit 版本的簡化 reducer

/store/user.js

這邊記得 export default slice.reducer 不是 slice.reducers

4.從 component 發送 action

App.js

如果用 Class component 可以使用 connect 接入 store state 與 dispatch

Next.js 整合 redux toolkit

/pages/_app.tsx

主要增加 _app.tsx 檔案,其他步驟與上述相同。

動態 State 內容

與 Redux 原本作法類似:

加入 Typescript

如果出現 (dispatch: any) => Promise 可以加上如下

  1. store.ts 內新增

2.component 內 useDispatch 加上 type

https://redux.js.org/usage/usage-with-typescript

Redux toolkit 結合 localstorage

用途:存入 state 到 localstorage,使用 redux-localstorage-simple 套件

store.js

如果用 next.js 出現 Hydration failed because the initial UI does not match what was rendered on the server

可以參考:https://github.com/vercel/next.js/discussions/35773#discussioncomment-2840696

persist 也可參考官方使用的另一個套件 redux-persist: https://redux-toolkit.js.org/usage/usage-guide#use-with-redux-persist

Last updated

Was this helpful?