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

为什么除非我提供onChange回调,否则react会将input [type =“ text”]字段设为只读?

张宣
2023-03-14
问题内容

最初我有:

<input type="text"id="requested" name="requested" ref="requested"   />

这是 只读的

更改为:

<input type="text" onChange={function() {}} id="requested" name="requested" ref="requested" />

使它接受来自键盘的输入。为什么会这样?


问题答案:

您列出的示例不是只读的。看到这个JSFiddle:http :
//jsfiddle.net/BinaryMuse/13sbw3dy/

如果您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



 类似资料:
  • 我使用GWT2.7,并希望在我的应用程序中提供带有级别信息和警告的日志记录。在我的gwt.xml文件中,我有: 它在开发模式下工作得很好,但在SuperDevMode中,我只能记录严重的日志级别。 为什么SuperDevMode只提供LogLevel严重?

  • 我有一个ViewModel处理我的业务逻辑,我正在使用Koin将它注入到我的活动和每个片段中。然而,在我从片段A-片段B导航并导航回片段A之后,我的观察者再次被触发。为什么会发生这种情况?当我返回时,如何阻止这种onChanged被触发? 我尝试将'this'和'view LifecycleOwner'设置为LiveData的LifecycleOwner。 我还尝试将observable移动到on

  • 问题内容: 我试图使所有字段为只读,而不明确列出它们。 就像是: 目前尚未设置问题。 问题答案: 小心,不一定与CustomAdmin具有相同的字段! “管理员的所有字段”看起来像这样:

  • 每次运行导出的文件(该文件包含一个以图像为图标的

  • 我刚刚安装了Ubuntu desktop 12.04并通过以下方式安装了Java 6 JDK: 但是当我转到时,我没有看到一个名为的目录,所以我认为它根本不存在!?! 当我转到时,我看到: 我现在正试图将作为环境变量添加到中,以便从基于shell的Ant构建中访问它: ? ? 还有别的吗? 我所说的“”是指我在系统上安装的JDK6的顶级目录,无论它在哪里······