React学习(6)—— 高阶应用:非受控组件
为什么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)—— 高阶应用:非受控组件相关推荐
- React学习手记4-组件分类(受控组件和非受控组件)
组件可以按不同角度做分类,这次从表单元素的使用开始.不同于div.span等元素只需根据状态来展示内容,表单元素自身可以维护一些状态,但是默认不受React控制.比如,一个input输入框,会随用户的 ...
- react学习17-React高阶组件
高阶组件 高阶组件 HOC(hight ordered component) withRouter就是高阶组件 高阶组件的本质其实就是一个函数,该函数参数接收一个组件,返回值依然是一个组件,返回的组件 ...
- react受控组件、非受控组件以及高阶组件
受控组件 组件的state是"唯一数据源",使用受控组件时必须要绑定onchange()函数,否则会警告. 通俗来讲:就是input的vlaue值是来源于组件的state,相当于是 ...
- React学习笔记八-受控与非受控组件
此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享.此为第八篇,主要介绍非受控组件与受控组件. 目录 1.非受控组件 1.1表单提交案例 1.2案例的总结 2.受控组件 2.1受控组件 ...
- 视频教程-2019 react入门至高阶实战,含react hooks-ReactJS
2019 react入门至高阶实战,含react hooks 从事前端开发近5年时间,曾任职于丽珠集团等大型企业担任高级前端开发工程师职位,积累了很多大厂的前端开发经验. 目前处于创业期,正在筹备自己 ...
- React中的高阶组件
React中的高阶组件 高阶组件HOC即Higher Order Component是React中用于复用组件逻辑的一种高级技巧,HOC自身不是React API的一部分,它是一种基于React的组合 ...
- 【react】受控组件与非受控组件
一.非受控组件 表单中输入类DOM的值现用现取 <script type="text/babel">//创建组件class Login extends React.Co ...
- 4.react受控组件与非受控组件
一.非受控组件 表单中输入类DOM的值现用现取 <script type="text/babel">//创建组件class Login extends React.Co ...
- React 的受控组件和非受控组件有什么不同
大家好,我是前端西瓜哥,今天我们来看看 React 的受控组件和非受控组件有什么不同. 受控组件 受控组件,指的是将表单元素的值交给组件的 state 来保存. 例子: import './style ...
最新文章
- HTTP缓存——304与200 from cache
- AIX上如何启动和停止系统服务
- JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数...
- Tableau系列之使用日期
- kepware rest服务器_工业过程数据OPC通讯服务器 kepware kepserver ex 4.5含授权
- MySQL zip压缩包安装
- 51Nod 1322 - 关于树的函数(树DP)
- JavaScript Document对象DOM
- 为初学者介绍10个最常被问到的Javascript问题
- quarz设置定时器任务的有效时间段_Quartz动态指定定时时间,每秒钟执行一次
- python 爬虫 糗百成人
- 天使投资人讨论区块链投资:区块链虚火还是真火?
- oracle百分比转数字_子分公司一把手谈企业数字化转型——新疆能源
- Android 支付宝支付SDK接入
- 第二章 信托的关系及其设立
- Delicate girl蘑菇街女装 精品时尚等你来
- word使用的奇技淫巧
- java应届生如何找工作?
- 最大信息熵增益_信息熵(Entropy)、信息增益(Information Gain)
- word中常用快捷键
热门文章
- java:socket通信
- C语言文件操作解析(二)
- Zsh vs. Bash不完全对比解析,zsh是一种更强大的被成为“终极”的Shell
- 使用 word 在 oschina 上写博客
- [转载].Freescale.伦德全 - 电路板级的电磁兼容设计
- Tensorflow 读取XML文件内容并对图片等比例缩放
- SpringBoot整合springDataJpa实现图片上传和显示
- 基于Android的校园二手商品交易平台,基于Android校园二手交易网站毕业设计论文.doc...
- steam_api.dll文件
- MongoDB的可视化工具