首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在React中填充受控输入

在React中填充受控输入
EN

Stack Overflow用户
提问于 2017-01-31 20:30:39
回答 2查看 1.1K关注 0票数 1

我目前正在使用React构建一个表单,我想知道从对象中预填充字段的最佳实践是什么。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React, { Component } from 'react'

class EditResourceForm extends Component {
  constructor (props) {
    super(props)

    this.state = {
      resource: props.resource
    }
  }

  handleFieldChanged (e) {
    // update state
  }

  render () {
    return (
      <input
        type="text"
        value={this.state.resource.email}
        onChange={::this.handleFieldChanged} />
    )
  }
}

this.state.resource.email为空或未定义时,我遇到了一个问题,因为React不希望我将这些值作为值提供给受控组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Warning: `value` prop on `input` should not be null. Consider using the   
empty string to clear the component or `undefined` for uncontrolled    
components.

哪里是提供空字符串作为null值的后备的合适位置?这应该在父组件的构造函数方法中完成吗?有没有一种方法可以避免显式地为每个可能具有null值的属性执行此操作?

EN

回答 2

Stack Overflow用户

发布于 2017-01-31 20:44:40

我能想到的最简单的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
constructor (props) {
    super(props)

    this.state = {
      resource: props.resource || {}
    }
  }

据我所知,没有办法自动设置这个值,使它们不为空,但如果有,我不建议这样做,好的代码是不言而喻的。

编辑1个

如果这还不够,那么另一个选择是直接从react的文档中使用uncontrolled components

由于非受控组件将事实源保存在DOM中,因此在使用非受控组件时,有时集成React和非React代码会更容易。如果你想变得又快又脏,代码也可以稍微少一点。否则,您通常应该使用受控组件。

编辑2个

文档中提供的代码看起来有点令人费解,所以下面是我将如何做的一小段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input type="text" onChange={(e, val) => {this.setState({email: val})}} />
票数 1
EN

Stack Overflow用户

发布于 2017-01-31 20:37:54

您可以使用defaultValue属性来设置初始值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input
  type="text"
  defaultValue={this.state.resource.email ? this.state.resource.email : ""}
  onChange={this.handleFieldChanged} />

查看关于受控组件与非受控组件的优秀文档:https://facebook.github.io/react/docs/uncontrolled-components.html

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

https://stackoverflow.com/questions/41966935

复制
相关文章
[译] React 中的受控组件和非受控组件
原文:https://www.viget.com/articles/controlling-components-react/
江米小枣
2020/06/16
2.7K0
React受控与非受控组件
表单项的元素 input/textarea/select 等 需要维护自己的state,并根据用户输入进行更新。 可变状态通常保存在组件的state中,只能通过setState()进行更新。
epoos
2022/06/06
5180
React受控组件和非受控组件
在HTML中,表单元素的标签<input>、<textarea>、<select>等的值改变通常是根据用户输入进行更新。 在React中,可变状态通常保存在组件的状态属性中,并且只能使用 setState() 进行更新,而呈现表单的React组件也控制着在后续用户输入时该表单中发生的情况,以这种由React控制的输入表单元素而改变其值的方式,称为受控组件。 比如,给表单元素input绑定一个onChange事件,当input状态发生变化时就会触发onChange事件,从而更新组件的state。
愤怒的小鸟
2021/01/11
3.7K0
React 中非受控和受控的组件
两者都是呈现 HTML 表单元素的 React 组件。这意味着,每当您创建具有 HTML 表单的组件时,您都会创建两个组件中的任何一个。但是两者之间的显着差异,接下来我们来我们来详细介绍它们。
用户8921923
2022/10/24
2.4K0
React受控组件
在React中,受控组件是指那些其值由React的状态(state)管理和控制的组件。通过使用受控组件,我们可以将表单元素的值和状态进行绑定,实现对用户输入的控制和处理。
堕落飞鸟
2023/05/19
7970
React源码中如何实现受控组件
在onChange中会更新num,num作为value prop传递给<input/>,达到value受控的目的。
公众号@魔术师卡颂
2020/11/02
1.5K0
React源码中如何实现受控组件
我们应该如何优雅的处理 React 中受控与非受控
大家好,我是19组清风。有段时间没有和大家见面了,最近因为有一些比较重要的事情(陪女朋友和换了新公司)在忙碌所以销声匿迹了一小段时间,
19组清风
2022/12/19
6.6K0
我们应该如何优雅的处理 React 中受控与非受控
React 非受控组件
在大部分情况下,推荐使用 受控组件 来实现表单、输入框等状态控制。在受控组件中,表单等数据都有React组件自己处理。这里将介绍另外一种非受控组件,表单的数据有Dom自己控制。
随风溜达的向日葵
2018/08/06
5410
React非受控组件
在React中,组件的状态(state)通常由组件自身管理和控制。然而,有时我们也可以使用非受控组件来处理表单元素或其他用户输入,这意味着我们不需要显式地管理和更新组件的状态。
堕落飞鸟
2023/05/19
6910
React 深度编程:受控组件与非受控组件
作者:司徒正美 https://segmentfault.com/a/1190000012458996 受控组件与非受控组件在官网与国内网上的资料都不多,有些人觉得它可有可不有,也不在意。这恰恰显示React的威力,满足不同规模大小的工程需求。譬如你只是做ListView这样简单的数据显示,将数据拍出来,那么for循坏与就足够了,但后台系统存在大量报表,不同的表单联动,缺了受控组件真的不行。 受控组件与非受控组件是React处理表单的入口。从React的思路来讲,作者肯定让数据控制一切,或者简单的理解为,页
企鹅号小编
2018/01/30
1.7K0
React篇(042)-什么是受控组件?
在随后的用户输入中,能够控制表单中输入元素的组件被称为受控组件,即每个状态更改都有一个相关联的处理程序。
齐丶先丶森
2022/05/12
4470
React的受控组件用法详解!
用state来获取和设置输入元素值的组件,称之为受控组件。<input type="text">, <textarea> 和 <select> 等标签都可用 value 属性,来实现受控组件。
Learn-anything.cn
2021/11/28
6320
antd mobile 作者教你写 React 受控组件和非受控组件
曾经,我每次面试时几乎都会问一个问题:antd 中的 Input 组件是受控组件还是非受控组件?
桃翁
2022/12/18
2.1K0
antd mobile 作者教你写 React 受控组件和非受控组件
React篇(043)-什么是非受控组件?
非受控组件是在内部存储其自身状态的组件,当需要时,可以使用 ref 查询 DOM 并查找其当前值。这有点像传统的 HTML。
齐丶先丶森
2022/05/12
3560
React--11: refs与事件处理非受控组件和受控组件
首先,受控组件不能使用ref了。那我们想改变值怎么办呢?给输入框添加onChange事件,只要输入框的值改变就会触发一个函数。
用户4793865
2023/01/12
5420
翻译 | 玩转 React 表单 —— 受控组件详解
原文地址:React.js Forms: Controlled Components 原文作者:Loren Stewart 译者:小 B0Y 校对者:珂珂君 本文涵盖以下受控组件: 文本输入框 数字输
iKcamp
2018/01/04
11.5K0
bootstrap typeahead 输入填充 常用
<!doctype html> <html> <head> <meta charset="utf-8"> <title>联想控股</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="css/bootstrap.css" rel="stylesheet" type="text/css"> <script src="http://code.jquery.com/jquery.js"></script> <script src="js/bootstrap.js"></script> <script src="js/bootstrap3-typeahead.min.js"></script> </head> <body> <div style="margin: 50px 50px"> <input type="text" id="txtUser" name="txtUser" value="" />
用户5760343
2019/07/07
4400
React学习(6)—— 高阶应用:非受控组件
在大部分情况下,推荐使用 受控组件 来实现表单、输入框等状态控制。在受控组件中,表单等数据都有React组件自己处理。这里将介绍另外一种非受控组件,表单的数据有Dom自己控制。
随风溜达的向日葵
2018/08/15
6440
React-组件-非受控组件 和 React-组件-高阶组件
🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗
杨不易呀
2023/09/30
1900
如何在受控表单组件上使用 React Hooks
React Hooks 是一个闪亮的新提案,将优化 90% 的 React 代码。 根据 Dan Abramov 的说法,Hooks 是 React 的未来。
三毛
2023/06/09
6240
如何在受控表单组件上使用 React Hooks

相似问题

React受控输入

19

输入字段在React中不变(受控输入)

11

React受控输入表单与非受控输入表单

127

带有React钩子的受控/非受控输入字段

110

为什么我要在react中从受控输入切换到非受控输入

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文