我无法访问保存的数据应用与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};' –