首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选中时,MUI单选将在onChange中传递标签和值

选中时,MUI单选将在onChange中传递标签和值
EN

Stack Overflow用户
提问于 2021-10-28 23:41:32
回答 1查看 278关注 0票数 1

我使用的是reactjs,我有一个MUI RadioGroup组件,我想从这个组件中一起传递所选值的标签。

我的单选按钮代码

代码语言:javascript
运行
复制
<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函数:

代码语言:javascript
运行
复制
const onChangeRadioAMIN = (event, value) => {   
        console.log(event);     
        event.persist();        
        setState((prev) => ({
            ...prev,
            AM_time_in_value: value,
        }));
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-28 23:56:24

您需要创建一个id字段来标识您的选项:

代码语言:javascript
运行
复制
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传递给FormControlLabelvalue属性,当用户更改选项时,change处理程序将接收id。请注意,您不能将option对象传递给value,因为它将被强制转换为string,否则您只能获得[object Object]

代码语言:javascript
运行
复制
{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中找到所选的选项对象,其中包含所需的所有字段:

代码语言:javascript
运行
复制
<RadioGroup
  onChange={(e, value) => {
    const id = parseInt(value, 10);
    const option = options.find((o) => o.id === id);
    // setState
  }}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69762100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档