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

React の「onClick」関数がレンダリング時にトリガーされるのはなぜですか?

Barbara Streisand
リリース: 2024-11-10 13:58:03
オリジナル
829 人が閲覧しました

Why is My React `onClick` Function Triggering on Render?

レンダリング時に起動する React onClick 関数

親コンポーネントからデータを受け取るコンポーネント内で React の onClick 関数を使用するときに、一般的な問題が発生します。 onClick 関数が不適切に定義されている場合、ユーザーのクリック イベントを待たずにレンダリング中に意図せずトリガーされる可能性があります。

問題を理解するために、提供されているコード例を分析してみましょう。

var taskNodes = this.props.todoTasks.map(function(todo) {
    return (
        <div>
            {todo.task}
            <button type="submit" onClick={this.props.removeTaskFunction(todo)}>Submit</button>
        </div>
    );
}, this);
ログイン後にコピー

問題は onClick イベント ハンドラーにあります。現在、this.props.removeTaskFunction(todo) が直接呼び出されており、レンダリング中に直ちに関数が実行されます。 onClick 関数はボタンがクリックされたときにのみ呼び出される必要があるため、これは望ましい動作ではありません。

この問題を解決するには、関数参照を呼び出すのではなく、関数参照を渡すようにコードを変更する必要があります。

<button type="submit" onClick={() => this.props.removeTaskFunction(todo)}>Submit</button>
ログイン後にコピー

アロー関数を使用すると、removeTaskFunction がすぐには呼び出されず、ユーザーのクリック イベントが実行されるまで待機します。アロー関数は ES6 で導入され、React 0.13.3 以降でサポートされています。

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

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