reactjs - 选中时,MUI Radio 在 onChange 中传递标签和值
问题描述
我正在使用 reactjs,我有一个 MUI RadioGroup 组件,我想从中传递所选值的标签。
我的单选按钮代码
<RadioGroup
aria-label="am-time-in"
value={state.AM_time_in_value}
name="radio-buttons-group"
onChange={onChangeRadioAMIN}
>
{
state.AM_timelogs_IN ?
state.AM_timelogs_IN.map((radio) => (
<Tooltip
title={
<>
<Typography variant="caption">
{`Scan Location: ${radio.scan_location}`}
</Typography>
<br />
<Typography variant="caption">
{`Scanned By: ${radio.scanned_by}`}
</Typography>
</>
}
>
<FormControlLabel value={radio.time_check.split(',')[1].slice(1)} control={<Radio size="small" />} label={radio.time_standard} item={radio} />
</Tooltip>
)) : null
}
</RadioGroup>
我的onchange
功能:
const onChangeRadioAMIN = (event, value) => {
console.log(event);
event.persist();
setState((prev) => ({
...prev,
AM_time_in_value: value,
}));
}
解决方案
您需要创建一个id
字段来识别您的选项:
const options = [
{
id: 0,
scan_location: value_1,
scanned_by: value_2,
time_check: value_3,
time_standard: value_4,
},
{
id: 1,
scan_location: value_1,
scanned_by: value_2,
time_check: value_3,
time_standard: value_4,
},
...
];
并将 传递id
给 的value
道具,当用户更改选项时FormControlLabel
,change
处理程序将收到。id
请注意,您不能将选项对象传递给,value
因为它将被强制转换为字符串,因此您只能得到[object Object]
:
{options.map((o) => (
<FormControlLabel
value={o.id} // <---- pass a primitive id value, don't pass the whole object here
control={<Radio />}
label={o.time_standard}
/>
))}
然后,您可以从中找到所选的选项对象,id
其中包含您需要的所有字段:
<RadioGroup
onChange={(e, value) => {
const id = parseInt(value, 10);
const option = options.find((o) => o.id === id);
// setState
}}
推荐阅读
- python - 异步任务取消
- python - 通过这个小测试用例,我是否有理由继续达到我的每日查询限制?
- html - 使用带方向的宽度
- python - actualSolve raise PulpSolverError("CPLEX_PY: Not Available")
- google-tasks-api - Google Task API 不再显示通过日历上的 API 创建的任务
- python - 如何为我的开发平台上不可用的包生成 requirements.txt 文件?
- python - 'OSError: [WinError 126] The specified module could not be found' 在 Windows 10 上使用 OpenAI Gym-Atari 时
- java - 如何使用正则表达式从表中提取别名?
- javascript - Zapier 如何正确格式化 Code 的工作 javascript
- angularjs - 如何判断当前是否显示剑道图表工具提示?