javascript - 如何更改 li 标签内的特定组件(reactjs);
问题描述
我编写了一个反应功能组件,其中包含一个无序列表。每个 li 都有一个特定的密钥。在 li 里面有一个 div 标签和一个按钮。我需要在单击时更改特定按钮的状态。
<div>
<ul>
{data.map((value,index) => {
return <li key={value.id}>
<div>
{value.name}
</div>
<button
onClick={changethislistate}
>
click
</button>
</li>
})}
</ul>
</div>
单击单击按钮时,我需要将值从单击更改为仅单击该 li。而且我还需要在功能组件中执行此操作。
解决方案
为项目创建一个组件li
,这样每个项目都可以管理它自己的状态:
const ListItem = ({value}) => {
const [clicked, setClicked] = useState(false);
return (
<li>
<div>{value.name}</div>
<button onClick={()=> setClicked(prev => !prev)}>{clicked ? "clicked" : "click"}</button>
</li>
);
};
然后:
<div>
<ul>
{data.map((value,index) => {
return <ListItem key={value.id} value={value} />
})}
</ul>
</div>
推荐阅读
- javascript - React - Javascript 和 JSX 的条件渲染,条件包装器组件
- opencv - 如何将 OpenCV 4 与 ROS (cv_bridge) 连接起来
- javascript - 通过在控制器中发布字符串来制作 json
- git - 通过代理使用 Git
- python - 为什么我的蒙特卡洛模拟中的迭代不总计?
- docker - 在 Synology 上使用 Docker 在 Confluence 上启用 SSL
- modelica - Modelica 中的温差量未按预期运行
- javascript - 递归方法转换,直到数组耗尽
- java - 计算可滚动视图上具有特定资源 ID 的所有元素
- java - 如何解析十六进制 iso8583 行?