Reactjs:我正在根据状态检查单选按钮,但在选中一个单选按钮时无法单击其他单选按钮

Posted

技术标签:

【中文标题】Reactjs:我正在根据状态检查单选按钮,但在选中一个单选按钮时无法单击其他单选按钮【英文标题】:Reactjs: I am checking radio button based on state but can't click other radio button when one is checked 【发布时间】:2021-08-27 20:10:40 【问题描述】:

我的单选按钮取决于状态值。如果用户是男性,则状态的值为 M,并且还选中了单选按钮 Male。现在说,我需要将其更改为Female。但是,如果我点击Female 单选按钮,它并没有从男性改变。

这是我的代码:

// App.js
const [ gender, setGender ] = useState('');

return (
    <GenderComponent
        value=gender
        name="gender"
        onSubmit=handleSubmit
    />
)

// genderComp.js
return (
    <div>
        <label>
            <input
                type="radio"
                checked=value==="M"
                onChange=onChange
                name=name
            />Male</label>
        <label>
            <input
                type="radio"
                checked=value==="F"
                onChange=onChange
                name=name
            />
            Female</label>
    </div>
    <button type="submit" onClick=handleSubmit>
        Save
    </button>
)

我希望单选按钮检查匹配value 的字段,并且这两个应该是可编辑的。我该怎么做?

【问题讨论】:

你需要定义你的onChange函数。这里有很多关于如何编写单选按钮的代码示例:***.com/questions/27784212/… 【参考方案1】: 正如约瑟夫所说,您需要定义 onChange 函数,但您还需要将 value 属性添加到您的两个输入中。 通过这种方式,您可以使用新定义的函数对这些值进行操作并将它们存储在状态对象中。更新状态会导致组件更新,因此您也会在单选按钮上看到更改。

我将把输入单选按钮的文档留在这里:https://developer.mozilla.org/en-US/docs/Web/html/Element/input/radio

【讨论】:

【参考方案2】:

所以我发现 onChange 是工作文件。我的问题通过将 checked 替换为 defaultChecked 并添加 value 属性来解决:

<div>
    <label>
        <input
            type="radio"
            onChange=onChange
            name=name
            defaultChecked=value==="M"
            value="M"
        />
        Male
    </label>
    <label>
        <input
            type="radio"
            onChange=onChange
            name=name
            defaultChecked=value==="F"
            value="F"
        />
        Female
    </label>
</span>

【讨论】:

以上是关于Reactjs:我正在根据状态检查单选按钮,但在选中一个单选按钮时无法单击其他单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

下拉菜单选项可将“必需”类添加到另一个下拉菜单,但在选中时删除其他选项的类

该复选框在未选中时不能返回 False,但在选中时可以返回 True

需要根据 reactjs 中的单选按钮输入填充值

Foreach 仅在选中时才选择第一个复选框

Objective C UIButton with divider并在选中时更改textcolor

如何在reactjs中更新地图功能中的状态