1. ホーム
  2. ジャバスクリプト

[解決済み】状態配列にプッシュする正しい方法

2022-04-10 08:39:45

質問

データを状態配列にプッシュするのに問題があるようです。 私はこの方法でそれを達成しようとしています。

this.setState({ myArray: this.state.myArray.push('new value') })

しかし、これは間違った方法で、ミュータビリティの問題を引き起こすと私は信じています?

解決方法は?

配列のプッシュが長さを返す

this.state.myArray.push('new value') は、配列そのものではなく、拡張された配列の長さを返します。 Array.prototype.push() .

戻り値が配列であることを期待しているのでしょう。

不変性

むしろReactの挙動らしいです。

この後setState()を呼び出すと、このstateを直接変更しないようにしましょう。 は、あなたが行った変異を置き換えます。this.state は、あたかもそれが 不滅です。 React.Component(リアクト・コンポーネント .

という感じでしょうか(Reactに詳しくないので)。

var joined = this.state.myArray.concat('new value');
this.setState({ myArray: joined })