2017-12-07 18 views
0

私はRNを初めて使い、入れ子にされたJSONでsetStateを使用する方法を理解しようとしています。入れ子になったJSONでsetState

私のオブジェクトは、次の形式である:

{ 
    "data": { 
    "count": 1, 
    "current": [ 
     { 
     "Id":"284" 
     }, 
     { 
     "Id":"285" 
     }, 
     { 
     "Id":"286" 
     } 
    ] 
    } 
} 

私は次のように状態を設定している:

state = { notices: [data] }; 

私はカウント値を更新し、状態を設定する必要があります。

this.state.notices[0].data.count = newcount 

私はそれをwth this.setStateにしようとしていますが、ネストされたJSONの設定方法を理解できません。

+0

あなたはそれを行うことはできません、データ全体を変更してその変更されたデータを状態に設定する必要があります – Jigar

+0

https://github.com/kolodny/immutability-helperやReduxやMobXのような状態マシン。 – David

+0

私の状態がstate = {notices:[data]}の場合はどうなりますか?私はカウントを送った。これはthis.state.count = 1. this.state.countをnewcountに更新する必要はありません。 setStateでこれを行うことはできますか? –

答えて

1

は、次のようにこれを行うことができます。

updateNotices = (newcount) => { 
    const { notices } = this.state; 
    const newNotices = [... notices]; 
    newNotices[0].data.count = newcount; 
    this.setState({ notices: newNotices }); 
} 

その後、あなたはupdateNotices(1)を呼び出すことができます。

+0

"_this3.setState"が定義されていないというエラーが表示されます –

+0

これをコンポーネント内で実行してもよろしいですか? this.setState()関数は、内部コンポーネントを呼び出すためにのみ使用できます。 – aleksandr

+0

ありがとう!コードを間違った場所に置いた。さらに1つの質問、どのように私は状態変数を更新した後に更新 –

関連する問題