第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

React w/ Redux/React-Redux 和 Redux-Persist 僅將第一次

React w/ Redux/React-Redux 和 Redux-Persist 僅將第一次

溫溫醬 2022-06-16 16:24:59
我在堅持Redux使用 ReactReact-Redux和Redux-Persist.減速機(jī)示例:export default (state = {}, action) => {    switch (action.type) {      case "SET_FOO":        return action.payload      default:        return state;    }  };動作示例:const setFooAction = (payload) => {    return {      type: "SET_FOO",      payload    }  }  export default setFooAction;索引.jsimport { createStore, combineReducers } from "redux";import { persistStore, persistReducer } from "redux-persist";import storage from "redux-persist/lib/storage";import { PersistGate } from 'redux-persist/integration/react'import fooReducer from "redux/reducers/setFooReducer";const persistConfig = {  key: "root",  storage};const rootReducer = combineReducers({  foo: fooReducer });const persistedReducer = persistReducer(persistConfig, rootReducer);let state = {  foo: {}}let store = createStore(    persistedReducer,     state,     window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());let persistor = persistStore(store);ReactDOM.render(  <Provider store={store}>    <PersistGate loading={null} persistor={persistor}>      <App />    </PersistGate>  </Provider>,  document.getElementById("root"));最初,一切正常:應(yīng)用程序加載初始狀態(tài)在整個應(yīng)用程序中設(shè)置這會更新 Redux 存儲PERSIST火災(zāi),并將其存儲在本地存儲中。刷新時,從第一次加載數(shù)據(jù)開始,一切都按預(yù)期持續(xù)存在。Redux 存儲中各種對象的第一次更新。然而...如果我決定在我的對象中添加任何新內(nèi)容并將它們設(shè)置/更新到 Redux 存儲中.........刷新時,只有最初保留的內(nèi)容仍然存在REHYDRATE(如果我正確理解 Redux 事件)?,F(xiàn)在我相信這與我的對象不變性和 Redux 沒有因此而接受更改有關(guān),但我試圖改變我的減速器沒有任何運(yùn)氣:
查看完整描述

1 回答

?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊

乍一看,一切似乎都很好。


你Object.assign在 reducer 中可能是導(dǎo)致嵌套foo對象的原因,因為 Redux 原則中的一個是不可變的,所以你應(yīng)該總是返回一個新狀態(tài),相反,你直接改變state.


您可以再添加一個第一個參數(shù),以創(chuàng)建一個新對象,該對象將具有新的 foo 的狀態(tài)屬性:


export default (state = {}, action) => Object.assign({}, state, {

   foo: action.payload !== "SET_FOO" ? state.foo : action.payload

});

一個更好的方法,你會經(jīng)??吹剑?/p>


export default (state = {}, { type, payload }) => {

  switch (type) {

    case 'SET_FOO': {

      return { ...state, payload }

    }


    default: {

      return state

    }

  }

}

在最后一個示例中,您可以清楚地看到我正在返回一個新對象,其中包含狀態(tài)所具有的所有屬性以及新的有效負(fù)載。


祝你好運(yùn)!


查看完整回答
反對 回復(fù) 2022-06-16
  • 1 回答
  • 0 關(guān)注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號