2017-07-01 14 views
0

ローカルストレージを使用して特定の状態をreduxに保存しようとしています。そのため、クライアントは毎回データベースにデータを書き込む必要がありません。しかし、データベースの71%だけが毎回ローカルストレージに保存されているようだが、なぜこれが起きているのか分からなかった。ローカルストレージがすべてを保存していません

これは私のローカルストレージコードです(Danのチュートリアルのものを使用しています)。店舗

const persistedState = loadState(); 
const createStoreWithMiddleware = applyMiddleware(promise)(createStore); 
const store = createStoreWithMiddleware(reducers, persistedState); 

store.subscribe(()=>{ 
    saveState({ 
     pokemons: store.getState().pokemons 
    }); 
}); 

の設定

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){ 
     /// 
    } 
}; 

コンポーネントは、それがより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

データの量はどれくらいですか?ローカルストレージには制限があります。しかし、私はあなたがそれらを超えている場合は、ストレージの例外を取得すると思います。 –

+0

と特定のデバイス/ブラウザ?これは携帯ですか? –

答えて

0

は、おそらくあなたはGoogle Chromeの(例えば)、5MBのために、ローカルストレージに利用可能な最大メモリ、より多くのデータを保存しようとしているありがとう。

0

sotrageに入れたいデータのサイズは?サイズが5MBを超えると、5MBしか保存されないので、

関連する問題