我尝试使用本地存储来保存redux中的特定状态,这样客户端就不必每次都要进行axios调用来填充数据库。但是,每次只有71%的给定数据库似乎在保存在本地存储中,而且我不确定为什么会发生这种情况。
这是我的本地存储代码(使用Dan教程中的代码)。
export const loadState = () => {
try {
const serializedState = localStorage.getItem('state');
if(serializedState === null){
return undefined
}
return JSON.parse(serializedState);
} catch (err){
return undefined;
}
};
export const saveState = (state) => {
try {
const serializedState = JSON.stringify(state);
localStorage.setItem('state', serializedState);
} catch(err){
///
}
};
设置商店
const persistedState = loadState();
const createStoreWithMiddleware = applyMiddleware(promise)(createStore);
const store = createStoreWithMiddleware(reducers, persistedState);
store.subscribe(()=>{
saveState({
pokemons: store.getState().pokemons
});
});
该组件应该查找当前的口袋妖怪数组的长度,以确定是否需要进行更多的axios调用。
componentDidMount(){
let promises = [];
for(var i = this.props.pokemons.length; i < 10; i++){
promises.push(this.props.fetchPokemons(i));
}
axios.all(promises).then(()=>{
this.props.mapPokemons(this.props.pokemons);
this.setState({
loading: false
})
})
}
每次刷新页面时,this.props.pokemons似乎只占71%的数据。即使我清除本地存储并尝试再次填充redux状态,当我刷新页面时,只有71%的数据存在。
任何帮助将不胜感激,
谢谢
答案 0 :(得分:0)
可能您尝试存储的数据多于本地存储可用的最大内存,例如Google Chrome(例如)5MB。
答案 1 :(得分:0)
您希望在sotrage中放入的数据大小是多少?因为如果大小超过5MB,则只存储5MB