本地存储不保存所有内容

时间:2017-07-01 15:32:04

标签: javascript reactjs redux local-storage

我尝试使用本地存储来保存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%的数据存在。

任何帮助将不胜感激,

谢谢

2 个答案:

答案 0 :(得分:0)

可能您尝试存储的数据多于本地存储可用的最大内存,例如Google Chrome(例如)5MB

答案 1 :(得分:0)

您希望在sotrage中放入的数据大小是多少?因为如果大小超过5MB,则只存储5MB