「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JSX Props でアロー関数やバインディングを避けるべき理由は何ですか?

JSX Props でアロー関数やバインディングを避けるべき理由は何ですか?

2024 年 11 月 8 日に公開
ブラウズ:348

Why Should You Avoid Arrow Functions or Binding in JSX Props?

JSX Props でのアロー関数またはバインドの使用が禁止されている理由

React を使用する場合は、アロー関数やバインドの使用を避けることが重要です。 JSX プロパティのバインディング。この方法を実行すると、パフォーマンスの問題や不正な動作が発生する可能性があります。

パフォーマンスの問題

JSX プロップ内でアロー関数またはバインディングを使用すると、レンダリングのたびにこれらの関数が強制的に再作成されます。これは、次のことを意味します。

  • 古い関数は破棄され、ガベージ コレクションがトリガーされます。
  • 多くの要素を継続的にレンダリングすると、パフォーマンスにジッターが発生する可能性があります。
  • PureComponents に依存するコンポーネントまたは、アロー関数 prop.

の変更により、 shouldComponentUpdate が依然として再レンダリングをトリガーします。動作

次の例を考えてみましょう:

onClick={() => this.handleDelete(tile)}

このコードは、それぞれに新しい関数を作成します。これにより、React はコンポーネントをダーティとしてマークし、再レンダリングをトリガーします。タイル プロップが変更されていない場合でも、矢印関数が異なるため、コンポーネントは再レンダリングされます。

ベスト プラクティス

これらの落とし穴を回避するには、次のベスト プラクティス:

  • イベント ハンドラーをコンストラクター:
constructor(props) {
  super(props);
  this.handleDelete = this.handleDelete.bind(this);
}
  • レンダリング メソッドの外側にアロー関数を作成します:
const handleDelete = tile => {
  // Handle delete logic
};

追加の注意:

アロー関数は、render メソッド内など、コンポーネントの他の部分で使用する場合にはまったく問題ないことに注意することが重要です。ただし、イベント ハンドラーを JSX props に割り当てる場合は、これらを回避する必要があります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3