欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React Store及store持久化的使用教程

 更新時(shí)間:2024年01月17日 14:51:10   作者:想不到耶  
這篇文章主要介紹了React Store及store持久化的使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

1.安裝

npm insatll react-redux
npm install @reduxjs/toolkit
npm install redux-persist

2. 使用React Toolkit創(chuàng)建counterStore并配置持久化

store/modules/counterStore.ts:

import { createSlice } from '@reduxjs/toolkit'
// 定義狀態(tài)類型  
interface Action {  
  payload:number,
  type: string
} 
interface State {  
  count: number
} 
export const counterStore = createSlice({
  // 模塊名稱獨(dú)一無(wú)二
  name: 'counter',
  // 初始數(shù)據(jù)
  initialState: {
    count: 1
  },
  // 修改數(shù)據(jù)的同步方法
  reducers: {
		increment: (state:State) => {
      state.count += 1
    },
    decrement: (state:State) => {
      state.count -= 1
    },
    incrementNum: (state:State, action: Action) => {
      state.count += action.payload
    }
  }
})
// 導(dǎo)出
export const { increment, decrement, incrementNum } = counterStore.actions
export default counterStore.reducer

store/index.ts:

import { configureStore, combineReducers } from '@reduxjs/toolkit'
import counterReducer from './modules/counterStore'
import { persistStore, persistReducer } from 'redux-persist'
// 選擇持久化存儲(chǔ)引擎,如 localStorage 或 AsyncStorage
import storage from 'redux-persist/lib/storage' // 默認(rèn)使用localStorage作為存儲(chǔ)引擎
// 組合各個(gè)模塊的reducer
const reducer = combineReducers({
  counter: counterReducer
})
// 配置持久化設(shè)置
const persistConfig = {
  key: 'root', // 存儲(chǔ)的鍵名
  storage // 持久化存儲(chǔ)引擎
  // 可選的配置項(xiàng),如白名單、黑名單等 選其一就好了
  // blacklist:['test'], // 只有 test 不會(huì)被緩存
  // whitelist: ["test"], // 只有 test 會(huì)被緩存
}
const persistedReducer = persistReducer(persistConfig, reducer)
export const store = configureStore({
  reducer: persistedReducer, // 注冊(cè)子模塊
  middleware: (getDefaultMiddleware) =>
    getDefaultMiddleware({
      serializableCheck: false // 關(guān)閉默認(rèn)的序列化檢查//關(guān)閉嚴(yán)格模式
    })
})
export const persistor = persistStore(store)

 3. 為React注入store

react-redux負(fù)責(zé)把Redux和React 鏈接 起來(lái),內(nèi)置 Provider組件,通過(guò) store 參數(shù)把創(chuàng)建好的store實(shí)例注入到應(yīng)用中,鏈接正式建立

main.tsx:

import ReactDOM from 'react-dom/client'
import App from './App'
import { BrowserRouter } from "react-router-dom"
import { Provider } from 'react-redux'
import {store, persistor } from "@/store"
// store持久化
import { PersistGate } from 'redux-persist/integration/react'
ReactDOM.createRoot(document.getElementById('root')!).render(
  <Provider store={store}>
    {/* 注入router實(shí)例 */}
    <BrowserRouter>
      <PersistGate loading={null} persistor={persistor}>
        <App />
      </PersistGate>
    </BrowserRouter>
  </Provider>
)

4. React組件使用store中的數(shù)據(jù)

useSelector,作用:在函數(shù)組件中獲取redux數(shù)據(jù)存儲(chǔ)對(duì)象中的某個(gè)數(shù)據(jù)

useDispatch,作用: 在函數(shù)組件中獲取dipatch方法(用于發(fā)送action給reducer函數(shù))

import React from "react";
import { useDispatch,useSelector } from "react-redux";
import { increment, decrement, incrementNum } from '@/store/modules/counterStore'
const App: React.FC = () => {
  const dispatch = useDispatch()
  const { count } = useSelector((state:any) => state.counter)
  return (
    <div>
      <div>{count}</div>
      <button onClick={() => {dispatch(increment())}}>加1</button>
      <button onClick={() => {dispatch(decrement())}}>減1</button>
      <button onClick={() => {dispatch(incrementNum(5))}}>加5</button>
    </div>
  );
};
export default App;

這樣刷新之后數(shù)據(jù)就不會(huì)初始化了 

到此這篇關(guān)于React Store及store持久化的使用的文章就介紹到這了,更多相關(guān)React Store使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React styled-components設(shè)置組件屬性的方法

    React styled-components設(shè)置組件屬性的方法

    這篇文章主要介紹了styled-components設(shè)置組件屬性的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • React實(shí)現(xiàn)Vue的watch監(jiān)聽(tīng)屬性方式

    React實(shí)現(xiàn)Vue的watch監(jiān)聽(tīng)屬性方式

    這篇文章主要介紹了React實(shí)現(xiàn)Vue的watch監(jiān)聽(tīng)屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React之Hooks詳解

    React之Hooks詳解

    這篇文章主要介紹了React hooks的優(yōu)缺點(diǎn)詳解,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下, 希望能夠給你帶來(lái)幫助
    2021-09-09
  • 深入研究React中setState源碼

    深入研究React中setState源碼

    這篇文章主要介紹了深入研究React中setState源碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 淺談react 同構(gòu)之樣式直出

    淺談react 同構(gòu)之樣式直出

    這篇文章主要介紹了淺談react 同構(gòu)之樣式直出,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 如何強(qiáng)制刷新react hooks組件

    如何強(qiáng)制刷新react hooks組件

    這篇文章主要介紹了如何強(qiáng)制刷新react hooks組件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • React組件的生命周期深入理解分析

    React組件的生命周期深入理解分析

    組件的生命周期就是React的工作過(guò)程,就好比人有生老病死,自然界有日月更替,每個(gè)組件在網(wǎng)頁(yè)中也會(huì)有被創(chuàng)建、更新和刪除,如同有生命的機(jī)體一樣
    2022-12-12
  • 深入理解react-router 路由的實(shí)現(xiàn)原理

    深入理解react-router 路由的實(shí)現(xiàn)原理

    這篇文章主要介紹了深入理解react-router 路由的實(shí)現(xiàn)原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • React 進(jìn)入頁(yè)面后自動(dòng) focus 到某個(gè)輸入框的解決方案

    React 進(jìn)入頁(yè)面后自動(dòng) focus 到某個(gè)輸入框的解決方案

    React.js 當(dāng)中提供了 ref 屬性來(lái)幫助我們獲取已經(jīng)掛載的元素的 DOM 節(jié)點(diǎn),你可以給某個(gè) JSX 元素加上 ref屬性,這篇文章主要介紹了React 進(jìn)入頁(yè)面以后自動(dòng) focus 到某個(gè)輸入框,需要的朋友可以參考下
    2024-02-02
  • create-react-app修改為多頁(yè)面支持的方法

    create-react-app修改為多頁(yè)面支持的方法

    本篇文章主要介紹了create-react-app修改為多頁(yè)面支持的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論