ホームページ >ウェブフロントエンド >jsチュートリアル >レンダリング中に React の「onClick」関数が起動するのはなぜですか?

レンダリング中に React の「onClick」関数が起動するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-16 13:55:03314ブラウズ

Why Does My React `onClick` Function Fire During Rendering?

React の onClick 関数の早期実行を理解する

React では、レンダリング中に onClick 関数が起動する理由を把握することが重要です。この現象は、子コンポーネントに値を渡すときに発生する可能性があります。

問題:

オブジェクトのリストをマッピングし、map() 関数を使用してそれらを表示する場合、各オブジェクトに関連付けられたボタンは、実行中に onClick 関数を途中で呼び出します。 rendering.

原因:

この問題の鍵は、onClick 関数が渡される方法にあります。提供されているコードでは、次の行がこの動作を担当します。

<button type="submit" onClick={this.props.removeTaskFunction(todo)}>

ここで、onClick 属性は括弧を先頭に付けることで関数を直接呼び出します。これは、onClick ハンドラーがすぐに実行され、レンダリング中に関数が実行されることを意味します。

解決策:

途中で実行されるのを防ぐには、関数自体を次の関数に渡す必要があります。 onClick を呼び出す代わりに。これは、ES6 で導入されたアロー関数を使用して実現できます。修正されたコードは次のとおりです:

<button type="submit" onClick={() => this.props.removeTaskFunction(todo)}>

説明:

この行では、アロー関数を使用して、onClick に渡される簡潔な匿名関数を定義します。ボタンをクリックすると、アロー関数は todo オブジェクトを使用してremoveTaskFunctionを呼び出します。このアプローチにより、onClick 関数はレンダリング中ではなく、ボタンがクリックされたときにのみトリガーされるようになります。

以上がレンダリング中に React の「onClick」関数が起動するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。