[解決済み] レンダリング時にonClickが呼ばれるのはなぜですか?- React.js
2022-07-17 22:18:02
質問
作成したコンポーネントがあります。
class Create extends Component {
constructor(props) {
super(props);
}
render() {
var playlistDOM = this.renderPlaylists(this.props.playlists);
return (
<div>
{playlistDOM}
</div>
)
}
activatePlaylist(playlistId) {
debugger;
}
renderPlaylists(playlists) {
return playlists.map(playlist => {
return <div key={playlist.playlist_id} onClick={this.activatePlaylist(playlist.playlist_id)}>{playlist.playlist_name}</div>
});
}
}
function mapStateToProps(state) {
return {
playlists: state.playlists
}
}
export default connect(mapStateToProps)(Create);
私が
render
このページを
activatePlaylist
が呼び出されるのは、それぞれの
playlist
の中で
map
. もし私が
bind
activatePlaylist
のように
activatePlaylist.bind(this, playlist.playlist_id)
無名関数を使うこともできますね。
onClick={() => this.activatePlaylist(playlist.playlist_id)}
とすれば、期待通りに動作します。 なぜこのようなことが起こるのでしょうか?
どのように解決するのですか?
へのパスが必要です。
onClick
参照
を機能させるために、以下のようにすると
activatePlaylist( .. )
を呼び出すと、その関数に
onClick
から返された値を
activatePlaylist
. これら3つのオプションのいずれかを使用することができます。
1
を使って
.bind
activatePlaylist.bind(this, playlist.playlist_id)
2 矢印機能を使用しています。
onClick={ () => this.activatePlaylist(playlist.playlist_id) }
3
からの戻り関数
activatePlaylist
activatePlaylist(playlistId) {
return function () {
// you code
}
}
関連
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] Reduxの非同期フローになぜミドルウェアが必要なのか?
-
[解決済み] React jsのonClickはメソッドに値を渡すことができない
-
[解決済み】ReactJS - "setState "が呼ばれるたびにrenderが呼び出されるのですか?
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] truthy や falsy を明示的なブール値、すなわち True や False に変換する。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] React.jsでテキスト入力のchange/focusOutイベントを正しくキャッチする方法とは?