javascript - 映射时如何管理多个单选选项组的状态
问题描述
我希望能够管理将动态呈现的无线电组的状态。
下面的代码呈现了 2 组无线电组(可能更多),两组状态都由“const [delay, setDelay] = useState('accept');”管理。我需要单独管理每个组的状态。
const [delay, setDelay] = useState('accept');
...
{data.map(({ delayOwner }, index: number) => (
<Tr key={index}>
{delayOwner && (
<Td>
<RadioOption
groupId={`radioDelay-${index}`}
label="Accept"
onChange={() => setDelay('accept')}
value={delay === 'accept'}
/>
<RadioOption
groupId={`radioDelay-${index}`}
label="Reject"
onChange={() => setDelay('reject')}
value={delay === 'reject'}
/>
</Td>
)}
当前输出:如果我在第一个无线电组上选择接受/拒绝,第二个无线电组也会改变。
* Accept O Reject
* Accept O Reject
* = selected, O = not selected
任何帮助将不胜感激!
解决方案
您需要将索引与您的状态一起使用以使其分开
{data.map(({ delayOwner }, index: number) => (
<Tr key={index}>
{delayOwner && (
<Td>
<RadioOption
groupId={`radioDelay-${index}`}
label="Accept"
onChange={() => setDelay({...delay, index:"accept"})}
value={delay[index] === 'accept'}
/>
<RadioOption
groupId={`radioDelay-${index}`}
label="Reject"
onChange={() => setDelay({...delay, index:"reject"})}
value={delay[index] === 'reject'}
/>
</Td>
)}
推荐阅读
- javascript - 返回(值);不能正常工作
- python - 在视图中加载 javascript
- python - Python3:BeautifulSoup4 未返回预期值
- python - 一个复选框,取消选中 PyQt5 / PySide2 中的所有其他复选框
- jsf-2 - 如何将现有的 JSFPortlet 转换为 JSON API
- php - 将 MySQL 选择轮询更改为 Laravel 5.5
- javascript - 如果我单击下一个/上一个,如何立即显示从轮播到我的第二个 div 的活动图像?
- schema.org - 如何在 ItemList 中为产品编码标记?
- asp.net-core - 迁移目标为 2.1.0-rtm-30799,即使 Target Framework 是 .Net Core 2.1
- delphi - Delphi xe10.2 打开新的ms word文档并插入表格