国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

React+Redux 數(shù)據(jù)存儲(chǔ)持久化

這篇具有很好參考價(jià)值的文章主要介紹了React+Redux 數(shù)據(jù)存儲(chǔ)持久化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

React+Redux 數(shù)據(jù)存儲(chǔ)持久化

1、安裝相關(guān)依賴

yarn add @reduxjs/toolkit redux react-redux redux-persist

2、userSlice:用戶狀態(tài)數(shù)據(jù)切片封裝

import { createSlice, PayloadAction } from '@reduxjs/toolkit'

interface IUserInfo {
  userName: string
  avatar?: string
  brief?: string
}

// 使用該類型定義初始 state
const initialState = {
  userInfo: <IUserInfo>{
    userName: 'zh',
    brief: '無(wú)心'
  }
}

const userSlice = createSlice({
  name: 'user',
  initialState,
  reducers: {
    // action: {
    //   payload: { uerName: 'zhw' },
    //   type: 'user/updateUserName'    name + 方法名
    // }
    // 使用: dispatch(updateUserName({ uerName: 'zhw' }))
    // // 使用 PayloadAction 類型聲明 `action.payload` 的內(nèi)容
    updateUserInfo: (state, action: PayloadAction<IUserInfo>) => {
      // Redux Toolkit 允許在 reducers 中編寫(xiě) "mutating" 邏輯。
      // 它實(shí)際上并沒(méi)有改變 state,因?yàn)槭褂玫氖?Immer 庫(kù),檢測(cè)到“草稿 state”的變化并產(chǎn)生一個(gè)全新的
      // 基于這些更改的不可變的 state。

      state.userInfo = action.payload
    }
  }
})

// 導(dǎo)出修改state  dispatch時(shí)的actions
export const { updateUserInfo } = userSlice.actions
export default userSlice.reducer

3、在store的index.ts中

默認(rèn)已經(jīng)模塊化了reducers,如下圖所示

React+Redux 數(shù)據(jù)存儲(chǔ)持久化,react.js,前端,前端框架

// configureStore: store配置項(xiàng)
import { configureStore } from '@reduxjs/toolkit'
// combineReducers: 組合reducers目錄下的所有reducer模塊
import { combineReducers } from 'redux'
// 數(shù)據(jù)持久化
import { persistStore, persistReducer } from 'redux-persist'
// defaults to localStorage for web
import storageLocation from 'redux-persist/lib/storage' 
// import storageSession from 'redux-persist/lib/storage/session'

// 導(dǎo)入自己封裝好的reducers
import userReducer from './reducers/userSlice'
// 持久化存儲(chǔ)配置對(duì)象
const persistConfig = {
  key: 'root',
  version: 1,
  storage: storageLocation
}
// 持久化處理后的reducers
const persistedReducer = persistReducer(
  persistConfig,
  combineReducers({
    // 數(shù)據(jù)切片
    userReducer
  })
)
// 將初九話插件和store通過(guò)middleware關(guān)聯(lián)起來(lái)
const store = configureStore({
  // userReducer 模塊名
  reducer: persistedReducer,
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: false
    })
})

// 可以訂閱 store
// store.subscribe(() => console.log(store.getState(), 'userSlice'))

// 持久化的store
const persistor = persistStore(store)

export { store, persistor }

4、將store和App組件關(guān)聯(lián)起來(lái)

import React from 'react'
import ReactDOM from 'react-dom/client'
// UI css
// antd v5 自帶的重置樣式
import 'antd/dist/reset.css'
// 自定義css
import '@/assets/style/global.scss'

// 導(dǎo)入路由模式
import { BrowserRouter } from 'react-router-dom'
// 導(dǎo)入redux倉(cāng)庫(kù)
import { Provider } from 'react-redux'
import { store, persistor } from '@/store'
// store持久化
import { PersistGate } from 'redux-persist/integration/react'

import App from './App.tsx'

ReactDOM.createRoot(document.getElementById('root')!).render(
  <Provider store={store}>
    <PersistGate loading={null} persistor={persistor}>
      <React.StrictMode>
        <BrowserRouter>
          <App />
        </BrowserRouter>
      </React.StrictMode>
    </PersistGate>
  </Provider

5、在組件中使用store

import { useSelector, useDispatch } from 'react-redux'
import { updateUserInfo } from '@/store/reducers/userSlice'
const Home = () => {
  const {
    userInfo: { userName, brief }
  } = useSelector((state: RootState) => state.userReducer)

  const dispatch = useDispatch()
  const test = () => {
    dispatch(updateUserInfo({ userName: 'zhw', brief: '那就這樣吧' }))
  }
  return (
    <>
      <div>home page</div>
      <p>{userName}</p>
      <p>{brief}</p>
      <button onClick={test}>測(cè)試</button>
    </>
  )
}
export default Home

數(shù)據(jù)持續(xù)化存儲(chǔ)github redux-persist
redux工具redux RTK

redux官網(wǎng) redux文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-601690.html

到了這里,關(guān)于React+Redux 數(shù)據(jù)存儲(chǔ)持久化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • docker (五)-docker存儲(chǔ)-數(shù)據(jù)持久化

    docker (五)-docker存儲(chǔ)-數(shù)據(jù)持久化

    將數(shù)據(jù)存儲(chǔ)在容器中,一旦容器被刪除,數(shù)據(jù)也會(huì)被刪除。同時(shí)也會(huì)使容器變得越來(lái)越大,不方便恢復(fù)和遷移。 將數(shù)據(jù)存儲(chǔ)到容器之外,這樣刪除容器也不會(huì)丟失數(shù)據(jù)。一旦容器故障,我們可以重新創(chuàng)建一個(gè)容器,將數(shù)據(jù)掛載到容器里,就可以快速的恢復(fù)。 volume 卷 卷存儲(chǔ)在

    2024年02月20日
    瀏覽(29)
  • Docker Swarm NFS 數(shù)據(jù)持久化存儲(chǔ)

    Docker Swarm NFS 數(shù)據(jù)持久化存儲(chǔ)

    可參考我前面的博客《基于 Linux 的 Docker Swarm 集群部署及應(yīng)用》 本次實(shí)驗(yàn): master :192.168.56.142 work1 :192.168.56.132 work2 :192.168.56.180 可參考我前面的博客《構(gòu)建NFS-FTP文件共享存儲(chǔ)》 本次實(shí)驗(yàn): NFS IP :192.168.56.141 Shared Dir :/data/sharedir 3.1 通過(guò) Volume 3.1.1 創(chuàng)建 Volume 1、創(chuàng)建 Do

    2024年02月04日
    瀏覽(21)
  • (九)K8S數(shù)據(jù)持久化高級(jí)存儲(chǔ)

    NFS(Network File System)是一種分布式文件系統(tǒng)協(xié)議,用于通過(guò)網(wǎng)絡(luò)共享文件和目錄。它允許客戶端計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)訪問(wèn)和讀取遠(yuǎn)程服務(wù)器上的文件,就像它們?cè)诒镜匚募到y(tǒng)中一樣。NFS 是一種常見(jiàn)的網(wǎng)絡(luò)文件共享協(xié)議,在許多環(huán)境中被廣泛使用。 在 Kubernetes 中,NFS 可以作為一

    2024年02月06日
    瀏覽(25)
  • 快速搞懂Pinia及數(shù)據(jù)持久化存儲(chǔ)(詳細(xì)教程)

    一.安裝及使用Pinia 1.安裝Pinia兩種方式都可,根據(jù)個(gè)人習(xí)慣來(lái) 2.在main.ts 中引入并掛載到根實(shí)例 3.src目錄下新建store/study/index.js并寫(xiě)入 Store 是用defineStore()定義的,它的第一個(gè)參數(shù)是一個(gè)獨(dú)一無(wú)二的id,也是必須傳入的,Pinia 將用它來(lái)連接 store 和 devtools。 defineStore()第二個(gè)參數(shù)可

    2023年04月15日
    瀏覽(27)
  • Flume實(shí)現(xiàn)Kafka數(shù)據(jù)持久化存儲(chǔ)到HDFS

    Flume實(shí)現(xiàn)Kafka數(shù)據(jù)持久化存儲(chǔ)到HDFS

    寫(xiě)在前面:博主是一只經(jīng)過(guò)實(shí)戰(zhàn)開(kāi)發(fā)歷練后投身培訓(xùn)事業(yè)的“小山豬”,昵稱取自動(dòng)畫(huà)片《獅子王》中的“彭彭”,總是以樂(lè)觀、積極的心態(tài)對(duì)待周邊的事物。本人的技術(shù)路線從Java全棧工程師一路奔向大數(shù)據(jù)開(kāi)發(fā)、數(shù)據(jù)挖掘領(lǐng)域,如今終有小成,愿將昔日所獲與大家交流一二

    2024年02月06日
    瀏覽(32)
  • 【云原生】第八篇--Docker容器數(shù)據(jù)持久化存儲(chǔ)機(jī)制

    物理機(jī)或虛擬機(jī)數(shù)據(jù)持久化存儲(chǔ) 由于物理機(jī)或虛擬機(jī)本身就擁有大容量的磁盤(pán),所以可以直接

    2023年04月09日
    瀏覽(22)
  • Vuex的插件vuex-persistedstate數(shù)據(jù)持久化存儲(chǔ)

    用 sessionStorage 緩存上面 state 的數(shù)據(jù), key 名為 store

    2024年02月05日
    瀏覽(20)
  • 持續(xù)集成部署-k8s-數(shù)據(jù)持久化-基本存儲(chǔ)方式

    關(guān)于k8s 數(shù)據(jù)持久化,可以先看下官方的介紹:

    2024年02月13日
    瀏覽(27)
  • 持續(xù)集成部署-k8s-數(shù)據(jù)持久化-高級(jí)存儲(chǔ)方式

    持久卷(PersistentVolume,PV) 是集群中的一塊存儲(chǔ),可以由管理員事先制備, 或者使用

    2024年02月16日
    瀏覽(22)
  • 如何借助Kafka持久化存儲(chǔ)K8S事件數(shù)據(jù)?

    如何借助Kafka持久化存儲(chǔ)K8S事件數(shù)據(jù)?

    大家應(yīng)該對(duì) Kubernetes Events 并不陌生,特別是當(dāng)你使用 kubectl describe 命令或 Event API 資源來(lái)了解集群中的故障時(shí)。 ? ? 盡管這些信息十分有用,但它只是臨時(shí)的,保留時(shí)間最長(zhǎng)為30天。如果出于審計(jì)或是故障診斷等目的,你可能想要把這些信息保留得更久,比如保存在像 Kafka

    2024年02月05日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包