ホームページ > ウェブフロントエンド > jsチュートリアル > ReactJS で配列内のオブジェクトをエレガントに更新するにはどうすればよいですか?

ReactJS で配列内のオブジェクトをエレガントに更新するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-15 03:35:08
オリジナル
822 人が閲覧しました

How to Elegantly Update Objects within Arrays in ReactJS?

ReactJS の配列でのエレガントなオブジェクト更新

ReactJS では、アプリケーションの状態内でオブジェクトの配列を管理することが一般的なシナリオになります。そのようなタスクの 1 つは、配列内の特定のオブジェクトを更新することですが、利用可能な手法を明確に理解していないと課題が生じる可能性があります。

シナリオ例

次の React について考えてみましょう。コンポーネントの例:

var CommentBox = React.createClass({
  getInitialState: function() {
    return {
      data: [
        { id: 1, author: "john", text: "foo" },
        { id: 2, author: "bob", text: "bar" },
      ],
    };
  },
  handleCommentEdit: function(id, text) {
    // Handle updating of the object inside the array
  },
});
ログイン後にコピー

目的は、handleCommentEdit メソッドが次の場合に this.state.data 内のオブジェクトを更新することです。

Object.assign() アプローチ

一般的に推奨される方法は、Object.assign() を使用することです。これは、新しいオブジェクトを作成せずに既存のオブジェクトを更新する簡潔な方法を提供します。

handleCommentEdit: function(id, text) {
  this.setState({
    data: this.state.data.map(el => (el.id === id ? Object.assign({}, el, { text }) : el)),
  });
}
ログイン後にコピー

ここでは、this.state.data の各要素を反復処理します。要素の ID が指定された ID と一致する場合、Object.assign() を使用して元の el と更新されたテキストを組み合わせて新しいオブジェクトを作成します。それ以外の場合は、元の要素を返します。

スプレッド演算子のアプローチ

より現代的なアプローチとして、ES2018 スプレッド演算子を利用できます:

handleCommentEdit: function(id, text) {
  this.setState({
    data: this.state.data.map(el => (el.id === id ? { ...el, text } : el)),
  });
}
ログイン後にコピー

Object.assign() メソッドと同様に、スプレッド演算子を使用して新しいオブジェクトを作成し、元のオブジェクトと更新されたオブジェクトを組み合わせます。 text プロパティ。

Object.assign() とスプレッド演算子のアプローチはどちらも、ReactJS アプリケーションの不変性を維持しながら、配列内のオブジェクトを更新する効率的かつ洗練された方法を提供します。

以上がReactJS で配列内のオブジェクトをエレガントに更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート