javascript - 所有索引在渲染后立即在控制台记录 - React
问题描述
我正在使用 map 函数在 React 中渲染一组图像。我的目标是使图像可点击,并在控制台中记录相应的索引(稍后我将使用它来设置状态)。使用下面的代码,所有索引都会在渲染后立即记录。我是 React 的新手,想不出解决方案,也找不到解决方案。
import React from 'react';
import './PlaylistGridStyle.css'
const PlaylistGrid = ( props ) => {
return (
<div>
<div>
<h1 className='playlistGridHeader'>
{props.user.display_name}'s playlists
</h1>
<ul className='list'>
{props.playlistData.items.map((playlist, index) => {
return(
<li key={playlist.name} className='item'>
<img src={playlist.images[0].url} alt='Playlist cover' height='250px' width='250px' onClick={console.log(index)}/>
<div className='description'>{playlist.name}</div>
</li>
)
})}
</ul>
</div>
</div>
)
}
export default PlaylistGrid;
解决方案
这样做会更好,因为 onClick 应该是函数。在您的情况下, onClickconsole.log
在渲染组件时收到了立即调用的值。
<img src={playlist.images[0].url} alt='Playlist cover' height='250px' width='250px' onClick={() => console.log(index)}/>
如果您需要处理函数中的点击,只需执行以下操作:
const PlaylistGrid = ( props ) => {
const handleClick = (index) => {
console.log(index);
};
return (
<div>
<div>
<h1 className='playlistGridHeader'>
{props.user.display_name}'s playlists
</h1>
<ul className='list'>
{props.playlistData.items.map((playlist, index) => {
return(
<li key={playlist.name} className='item'>
<img src={playlist.images[0].url} alt='Playlist cover' height='250px' width='250px' onClick={() =>handleClick(index)}/>
<div className='description'>{playlist.name}</div>
</li>
)
})}
</ul>
</div>
</div>
)
}
export default PlaylistGrid;
推荐阅读
- swift - 如何在视图控制器之间来回传递数据?
- macos - 使用 rm 命令从终端删除 ~$filename.docx
- c - 如何读取和评估存储二叉搜索树遍历的二进制文件?
- c# - 在新标签页中打开 Url.Action
- javascript - 当它们在中心的 20px 内时,下划线坐标
- c# - MimeKit - 需要帮助加载 pfx 文件:NullReferenceException
- mysql - 从导入创建 SQL 关系
- javascript - 如何从数组列表/javascript中弹出图像
- svg-edit - SVGedit:如何从 svgCanvas 中删除所有元素?
- firebase - 如何从 Firestore Flutter 中的集合中获取数据