我無法訪問保存的數據應用與redux-persist啓動後。默認值被載入前店與補充水份終極版 - 堅持
減速機使用在我的初始狀態中定義的數據進行初始化。在前一個會話的狀態使用AsyncStorage加載時,組件已經顯示了默認數據。
我知道數據已成功保存和提取。如果我離開屏幕到另一個屏幕並返回到屏幕,我可以看到數據顯示正確。調試狀態和道具也表明這是一個異步時間問題。
我怎樣才能延緩了Redux集裝箱的裝載到店裏再水化後。或者,我可以強制更新container(及其子項)以在商店完成加載時更新嗎?
這是我試過的。 配置我的商店:
export default function configureStore(initialState) {
const middlewares = [thunk];
if (process.env.NODE_ENV === `development`) {
const createLogger = require(`redux-logger`);
const logger = createLogger();
middlewares.push(logger);
}
let store = compose(
applyMiddleware(...middlewares),
autoRehydrate())(createStore)(reducers);
persistStore(store, {blacklist: ['routing'], storage: AsyncStorage},() => {
store.dispatch(storeRehydrateComplete())
})
return store
}
希望這將更新所有其他組件(因爲在終極版所有減速被稱爲一個動作),我試圖創建當存儲加載完成後觸發一個動作:
import { REHYDRATE_STORE } from './types'
export function storeRehydrateComplete(){
return {
type: REHYDRATE_STORE,
}
}
而且它的減速機: 進口{} REHYDRATE_STORE從」 ../actions/types' 常數初始化狀態= { storeIsReady:假 }
export default function reducer(state = initialState, action){
switch (action.type) {
case REHYDRATE_STORE:
return {...state, storeIsReady:true}
break;
default:
return state
break;
}
}
不過,儘管storeIsReady狀態更改爲真時補液完成後,我仍然無法弄清楚如何強制更新容器組件。
如果使容器接收storeIsReady'mapStateToProps',它觸發componentWillReceiveProps?另外,沒有必要使用自己的動作類型,因爲你在redux-persist中有一個特殊的動作,''從'redux-persist /常量'導入{REHYDRATE};' –