[解決済み】ReactのonClick関数はレンダリング時に発火する
2022-04-15 20:43:53
質問
子コンポーネントに2つの値を渡しています。
- 表示するオブジェクトのリスト
- 削除機能
オブジェクトのリストを表示するために.map()関数を使用していますが(reactのチュートリアルページにある例のように)、そのコンポーネント内のボタンは、オブジェクトのリストを表示するために
onClick
関数は、レンダリング時に発生します(レンダリング時には発生しないはずです)。私のコードは次のようになります。
module.exports = React.createClass({
render: function(){
var taskNodes = this.props.todoTasks.map(function(todo){
return (
<div>
{todo.task}
<button type="submit" onClick={this.props.removeTaskFunction(todo)}>Submit</button>
</div>
);
}, this);
return (
<div className="todo-task-list">
{taskNodes}
</div>
);
}
});
質問ですが、なぜ
onClick
という関数がレンダリング時に発生するのですが、どうすれば発生しないようにできるのでしょうか?
解決方法は?
onClickに関数を渡すのではなく、その関数を呼び出しているため、その行を以下のように変更してください。
<button type="submit" onClick={() => { this.props.removeTaskFunction(todo) }}>Submit</button>
=>
は、ES6で導入されたArrow Functionと呼ばれるもので、React 0.13.3以降でサポートされる予定です。
関連
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み] [Solved] Uncaught TypeError: nullのプロパティ 'appendChild' を読み取ることができない。
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] Reactルータを使ったプログラムによるナビゲーション
-
[解決済み] React JSX内のループ
-
[解決済み] Reactのこの3つの点は何をするところなのでしょうか?
-
[解決済み] addEventListenerとonclickの比較
-
[解決済み] React jsのonClickはメソッドに値を渡すことができない
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】JS ファイルが net::ERR_ABORTED 404 (Not Found) を取得する)
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み] Uncaught (in promise) TypeError: フェッチに失敗してCorsエラー
-
[解決済み] RESOLVED : axios がリクエストをループで繰り返すけど、これはいらない|axios [duplicate]