当前位置: 首页 > 知识库问答 >
问题:

ReactJS:如何设置输入组件的默认值?

宋博易
2023-03-14

当对输入字段使用默认值时,如何绕过带有道具状态的反模式

在呈现窗体时,它应该包含一些默认值。当我设置一些值并关闭表单,然后重新打开表单时,我希望显示默认值,而不是以前输入的值······

但是当我让state从道具继承值时,道具就永远改变了。我还没找到绕过这个的方法。

共有1个答案

伯逸明
2023-03-14

如果您查看默认的input组件,或者来自react-bootstrap的输入,或者internet上的大多数datepickersselects,您将看到大多数都有valueprop,并且大多数都有little到none状态,至少当涉及到所选值时是这样。

输入意味着uncontroll,这意味着它们最好没有状态,只接收作为道具的值,以及当值改变时它们应该调用的回调。由它们上面的控制器-view来监视这些事件并更改模型。有时,输入也可以方便地将值保持在状态中,但它们只能这样做,只要它们尊重作为道具传递的新值,因为状态会在重新发送器中持续存在,并且getInitialState只调用一次。请参见:reactJS:为什么将组件初始状态传递为prop反模式?

但是,由于controller-view处理所有这些值更改太麻烦了,React附带了一个名为ReactLink的实用程序,简单地说,它是一种将输入自动绑定到controller-view状态的属性的方法。示例:您可以将输入绑定到模型的属性dateofborny,该属性是controller-view状态的一部分。

现在回到你的问题,你实际上不传递默认值,你传递值本身,作为道具。controller-view应该决定它是什么。dateofborny字段的值是多少?没有?好的,我将把默认值作为value道具传递。

 类似资料:
  • 问题内容: 但它不起作用,如何设置默认值? 问题答案: 日期应采用格式。一位数的日期和月份应填充0。一月是01。 从文档中: 代表日期的字符串。 值:RFC3339中定义的有效完整日期,另外具有年份部分为四位或更多位数字表示大于0的数字的资格。 您的代码应更改为:

  • 我在组件中有输入: 模板是: 问题是,如果< code >申请人没有对象< code >代表,申请就会失败。 如果没有,如何设置默认值? 这样地: 我需要始终有< code >类型的< code >代表。 这里还介绍了如何避免错误:

  • 问题内容: 在React中为复选框状态分配默认值后,我无法更新复选框状态。 分配后,我无法通过单击取消选中/选中来交互复选框状态。 问题答案: 如果仅使用创建复选框,则使用该属性 。 归功于@nash_ag

  • 本文向大家介绍如何给非控组件设置默认的值?相关面试题,主要包含被问及如何给非控组件设置默认的值?时的应答技巧和注意事项,需要的朋友参考一下 表单元素依赖于状态(state),表单元素需要默认值实时映射到状态的时候,就是受控组件 不通过state控制表单元素,而是通过ref来控制的表单元素就是非受控组件

  • 你好 我在为字段设置默认值时遇到问题。我使用的是百里叶标签,但字段和值标签不能一起工作。我正在寻找另一种解决方案,以便我可以将默认值传递给该字段。 对于字段的第一个输入:th:field = " { technical attributes[$ { I . index }]。name}"*我试图设置一个默认值,但是对于th:field标签,th:value标签不起作用。这怎么解决?提前感谢您的宝贵

  • 问题内容: 我有文件上传输入: 我这样处理上传: 如果我两次上传相同的文件,则不会触发上传事件。我该如何解决?对于简单的js代码,只需执行以下操作:this.value = null; 在变更处理程序中。我该如何使用ReactJS? 问题答案: 我认为您可以像这样清除输入值: 文件输入无法控制,没有React特定的方式来实现。