2017-08-04 7 views
-1

私はCodePenをReactJSプロジェクトに使用しています。ここcomponentDidUpdate()ReactJSでlocalStorageを正しく設定する方法は?

componentDidUpdate(prevProps,prevState){ 
    localStorage.setItem("myThings",JSON.stringify(this.state.Things)); 
} 

this.state={ 
    Things:{ 
     element:"value", 
     element2: "value" 
    }, 
    activated:-1 
} 

IのみThingsを設定する必要があるので、私は、コンポーネントのライフサイクルにlocalStorageを設定することを決定した: Iである状態の一部をlocalStorageを設定する必要がもし私がconsole.log(localStorage.getItem("myThings"))と呼んだら私は記憶価値を得ていません。私は(私はあまりにも後者を試みたが)いずれかcomponentWillMount()方法コンストラクタを好むべきで反応させドキュメントに読み取るので、私は、コンストラクタ中の溶液を実施localStorage検査部について

constructor(props){ 
    super(props); 
    if (localStorage.getItem("myThings")!==null){ 
     this.state={ 
      Things:JSON.parse(localStorage.getItem("myThings")), 
      activated:-1 
     } 
    } 
    ... 
+0

typoがstackoverflowのみにありました –

答えて

0

注意散漫からのエラー。問題はif(...){...}ステートメントの後のコンストラクターでのelseの不足です。 ifステートメントで設定された状態の次の状態になるたびに設定されていました。

ありがとうございます。

0

SetItem関数は関数である:

componentDidUpdate(prevProps,prevState){ 
    localStorage.setItem("myThings",JSON.stringify(this.state.Things)); 
} 
+0

さらに複雑なデータ構造を格納する必要がある場合は、この回答を参照してください。https://stackoverflow.com/a/2010994/2549154 – Matthew

0

SetItem関数上から述べたように関数です。また、ウィンドウobjのlocalStorageにアクセスする必要があるかもしれません。

window.localStorage.setItem(...); 

または変数を作成し、省略形を参照してください。

const storage = window.localStorage; 
storage.setItem(...); 
関連する問題