2017-08-09 5 views
0

反応し、私はこれら二つのオプションのレンダリング動作に関する質問を持っています。ただし、オプション2のみがページを再レンダリングします。オプション1を指定しても、表現型が変更されることはありません。 その理由は何ですか?ありがとう!がSETSTATEレンダリング動作

答えて

2

この行stepsData[stepIndex][targetArray] = newArray;は、新しいものを作成する代わりにstepsData[stepIndex]オブジェクトを変異させます。

それは

stepsData[stepIndex] = { 
    ...stepsData[stepIndex], 
    [targetArray]: newArray 
} 

ようにあなたは、マップ関数の内部でやったのと同じ方法でなければなりません。

+0

ありがとう、男! – Nocebo

+0

私は要素をスプライスしたい場合、私は同じことをするだろうか? 'stepsDataは[stepIndex] .contentComponents = { ... stepsData [stepIndex]、 contentComponents:stepsDataは[stepIndex] .contentComponents.splice(I、1) };' – Nocebo

+1

@Noceboはsplice' '忘れ。元の配列を変更し、スプライスされた要素を返します。代わりに 'filter'を使用してください。 –

関連する問題