2017-08-24 17 views
0
showAllPics(docid){ 

     console.log(docid) 
     var newSelected = Object.assign({},this.state.CompetitorPhotos); 

     console.log("b4-->",newSelected[docid]['display']); 
     newSelected[docid]['display'] = true; 
     console.log("after -->",newSelected[docid]['display'],newSelected); 

     console.log(newSelected,this.state.CompetitorPhotos) 

     this.setState({ CompetitorPhotos: newSelected },function(){ 
      console.log(newSelected,this.state.CompetitorPhotos) 
     }); 

    } 

reactjsステートのネストされたプロパティで 'display'プロパティを更新しようとしています。 次のコードは...私が間違って何をやって失敗した...(https://facebook.github.io/react/docs/react-component.html#setstateから)ここで注目すべきネストされた状態のネストされたオブジェクトプロパティReactjsを更新するには?

console.log("after -->",newSelected[docid]['display'],newSelected); 
    results in "after -->",true, newSelected.docid.display remains false 
+0

Object.assign({})深くないコピーを行いますので、newSelectedを行うときに、基本的に自分の状態を変異している[DOCID] [「表示」] =真;しかし、必要に応じて状態を更新するために、lodashのcloneDeepのようなものを使用することもできます。https://lodash.com/docs/4.17.4#cloneDeep –

+0

ダミーデータでjsbin/jsfiddleを作成できますか –

答えて

0

重要なこと:

SETSTATE()は常にすぐにコンポーネントを更新しません。 更新を後でにバッチするか、延期することがあります。これにより、setState()を呼び出した直後にthis.state を読み込みます。

0

あなたはちょうどこの質問を見て ...と、ネストされた状態を更新することができます。二度目に答えるために申し訳ありませんreact set state in for nested state

return { 
    ...state, 
    fetching: false, 
    fetched: true 
} 
0

。ここでは、ネストされたストアを更新する方法を例に反応です:

this.setState({test: {one: 'asdasdasd'}},() => { 
     let { test } = this.state 
     const second = {two: 'zwei'} 
     Object.assign(test, second) 
     this.setState({ 
      test, 
     },() => { 
      console.log(this.state) 
     }) 
    }) 
関連する問題