当前位置: 首页 > 面试题库 >

HTML + React:单选按钮停留在最初设置为“已选中”的那一个上

卫阳炎
2023-03-14
问题内容

我有两个单选按钮,一组在加载页面时被选中。看来我无法将其更改为第二个。如果需要的话,HTML是由reactjs构建的。chrome上的标记如下:

<fieldset data-reactid=".0.0.0.0.0.0.1">
<label for="coop-radio-btn" data-reactid=".0.0.0.0.0.0.1.0">
    <span data-reactid=".0.0.0.0.0.0.1.0.0">To a Cooperative</span>
    <input type="radio" name="requestOnBehalfOf" value="coop" id="coop-radio-btn" data-reactid=".0.0.0.0.0.0.1.0.1">
</label>
<label for="union-radio-btn" data-reactid=".0.0.0.0.0.0.1.1">
    <span data-reactid=".0.0.0.0.0.0.1.1.0">Additional Request</span>
    <input type="radio" name="requestOnBehalfOf" value="union" checked="" id="union-radio-btn" data-reactid=".0.0.0.0.0.0.1.1.1">
</label>
</fieldset>

问题答案:

原因是React在制作inputs受控组件,因为每个输入的值都是从服务器端设置的。

引用布兰登的答案:

如果您value={whatever}在输入中添加一个属性,使其成为受控组件, 那么 除非您添加一个onChange用于更新的值的处理程序,
否则 它是只读的whatever。从React
docs

为什么使用受控组件?

<input>在React中使用表单组件(例如在React中)提出了在编写传统表单HTML时不存在的挑战。例如,在HTML中:

<input type="text" name="title" value="Untitled" />

这将呈现一个以值 初始化 的输入Untitled。当用户更新输入时,节点的value 属性
将更改。但是,node.getAttribute('value')仍会返回初始化时使用的值Untitled

与HTML不同,React组件必须在任何时间点(不仅在初始化时)代表视图的状态。例如,在React中:

render: function() {
  return <input type="text" name="title" value="Untitled" />;
}

由于此方法在任何时间点都描述了视图,因此文本输入的值应 始终Untitled

我发现的最简单的解决方案是将添加onChange={function(){}}input



 类似资料:
  • 问题内容: 最初如何在HTML中选中分配单选按钮的值? 问题答案: 您可以为此使用属性:

  • 问题内容: 我需要在表单中设置一个单选按钮;必须使用来自AJAX响应的值进行检查。 我的AJAX回应是。“手动”或“自动”可能是其值。 更新: 所以我尝试了一些不同的方法,但是我无法弄清楚。 单程 : 其他方式: 这就是我的ajax成功函数用来填充表单值的方式。 这是HTML单选按钮: 如何正确执行此操作? 问题答案: 用 样品: 编辑: 更改。 至

  • 我正在努力: 使用React中的映射从常量数组生成单选按钮 让用户选择一个并使用handleChange()设置状态 通过下面的代码,我能够实现1,但是由于某种原因,当我尝试用handleChange()显示时,我看到它是一个空字符串。 你能帮帮我吗? 谢谢

  • 问题内容: 我想为单选按钮的选定标签添加样式: HTML: CSS 有什么想法我做错了吗? 问题答案: .radio-toolbar input[type=”radio”] { 首先,您可能想在单选按钮上添加属性。否则,它们不属于同一组,可以检查多个单选按钮。 另外,由于我将标签放置为(单选按钮的)同级标签,因此必须使用和属性将它们关联在一起。

  • 问题内容: 我有一个模型在storeLocations对象中返回isDefault值。如果isDefault返回true,则我不会将该组中的单选按钮设置为选中状态。 不知道我是否需要执行$ each(data,function(index,value)并遍历返回的每个对象,或者是否有更简单的方法使用角度构造来执行此操作。 目的: 标记: 问题答案: 使用代替。 由于代码重复,版本较差。