为什么80%的码农都做不了架构师?>>>   

非受控组件

使用非受控组件

在大部分情况下,推荐使用 受控组件 来实现表单、输入框等状态控制。在受控组件中,表单等数据都有React组件自己处理。这里将介绍另外一种非受控组件,表单的数据有Dom自己控制。

非受控组件实现的重点是用Refs特性获取真实Dom来代替每次数据变更去更新组件的状态值。

例如下面的代码,在非受控组件中记录被用户输入的名字:

class NameForm extends React.Component {constructor(props) {super(props);this.handleSubmit = this.handleSubmit.bind(this);}handleSubmit(event) {//在提交时,直接使用ref获取的真实Dom获取值alert('A name was submitted: ' + this.input.value);event.preventDefault();}render() {return (<form onSubmit={this.handleSubmit}><label>Name:<input type="text" ref={(input) => this.input = input} /></label><input type="submit" value="Submit" /></form>);}
}

尝试代码。

由于在非受控组件中使用Refs特性获取了真实Dom的实例,所以在使用非受控组建时,更容易集成React和非React代码,在某些时候也可以省略一些代码。但是建议除了特殊情况,都使用受控组件。

如果想要深入理解什么情况下使用哪种组件,建议阅读 受控和不受控表单输入 一文。

组件默认值

在React渲染的生命周期,表单中的value属性会被覆盖Dom中的value值。在使用非受控组件时,通常需要React设定一个默认初始值但是不再控制后续更新。基于这个案例,你可以指定一个defaultValue 属性来代替 value

render() {return (<form onSubmit={this.handleSubmit}><label>Name:<inputdefaultValue="Bob"type="text"ref={(input) => this.input = input} /></label><input type="submit" value="Submit" /></form>);
}

例如中“defaultValue = "Bob"”就是指定了一个默认值。同样地, <input type="checkbox"> 和 <input type="radio"> 支持 defaultChecked属性, <select> 标签支持 defaultValue属性。

原文地址:https://www.chkui.com/article/react/react_uncontroller_components

转载于:https://my.oschina.net/chkui/blog/874409

React学习(6)—— 高阶应用:非受控组件相关推荐

  1. React学习手记4-组件分类(受控组件和非受控组件)

    组件可以按不同角度做分类,这次从表单元素的使用开始.不同于div.span等元素只需根据状态来展示内容,表单元素自身可以维护一些状态,但是默认不受React控制.比如,一个input输入框,会随用户的 ...

  2. react学习17-React高阶组件

    高阶组件 高阶组件 HOC(hight ordered component) withRouter就是高阶组件 高阶组件的本质其实就是一个函数,该函数参数接收一个组件,返回值依然是一个组件,返回的组件 ...

  3. react受控组件、非受控组件以及高阶组件

    受控组件 组件的state是"唯一数据源",使用受控组件时必须要绑定onchange()函数,否则会警告. 通俗来讲:就是input的vlaue值是来源于组件的state,相当于是 ...

  4. React学习笔记八-受控与非受控组件

    此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享.此为第八篇,主要介绍非受控组件与受控组件. 目录 1.非受控组件 1.1表单提交案例 1.2案例的总结 2.受控组件 2.1受控组件 ...

  5. 视频教程-2019 react入门至高阶实战,含react hooks-ReactJS

    2019 react入门至高阶实战,含react hooks 从事前端开发近5年时间,曾任职于丽珠集团等大型企业担任高级前端开发工程师职位,积累了很多大厂的前端开发经验. 目前处于创业期,正在筹备自己 ...

  6. React中的高阶组件

    React中的高阶组件 高阶组件HOC即Higher Order Component是React中用于复用组件逻辑的一种高级技巧,HOC自身不是React API的一部分,它是一种基于React的组合 ...

  7. 【react】受控组件与非受控组件

    一.非受控组件 表单中输入类DOM的值现用现取 <script type="text/babel">//创建组件class Login extends React.Co ...

  8. 4.react受控组件与非受控组件

    一.非受控组件 表单中输入类DOM的值现用现取 <script type="text/babel">//创建组件class Login extends React.Co ...

  9. React 的受控组件和非受控组件有什么不同

    大家好,我是前端西瓜哥,今天我们来看看 React 的受控组件和非受控组件有什么不同. 受控组件 受控组件,指的是将表单元素的值交给组件的 state 来保存. 例子: import './style ...

最新文章

  1. HTTP缓存——304与200 from cache
  2. AIX上如何启动和停止系统服务
  3. JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数...
  4. Tableau系列之使用日期
  5. kepware rest服务器_工业过程数据OPC通讯服务器 kepware kepserver ex 4.5含授权
  6. MySQL zip压缩包安装
  7. 51Nod 1322 - 关于树的函数(树DP)
  8. JavaScript Document对象DOM
  9. 为初学者介绍10个最常被问到的Javascript问题
  10. quarz设置定时器任务的有效时间段_Quartz动态指定定时时间,每秒钟执行一次
  11. python 爬虫 糗百成人
  12. 天使投资人讨论区块链投资:区块链虚火还是真火?
  13. oracle百分比转数字_子分公司一把手谈企业数字化转型——新疆能源
  14. Android 支付宝支付SDK接入
  15. 第二章 信托的关系及其设立
  16. Delicate girl蘑菇街女装 精品时尚等你来
  17. word使用的奇技淫巧
  18. java应届生如何找工作?
  19. 最大信息熵增益_信息熵(Entropy)、信息增益(Information Gain)
  20. word中常用快捷键

热门文章

  1. java:socket通信
  2. C语言文件操作解析(二)
  3. Zsh vs. Bash不完全对比解析,zsh是一种更强大的被成为“终极”的Shell
  4. 使用 word 在 oschina 上写博客
  5. [转载].Freescale.伦德全 - 电路板级的电磁兼容设计
  6. Tensorflow 读取XML文件内容并对图片等比例缩放
  7. SpringBoot整合springDataJpa实现图片上传和显示
  8. 基于Android的校园二手商品交易平台,基于Android校园二手交易网站毕业设计论文.doc...
  9. steam_api.dll文件
  10. MongoDB的可视化工具