博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React文档(十七)非受控组件
阅读量:6716 次
发布时间:2019-06-25

本文共 1880 字,大约阅读时间需要 6 分钟。

大多数情况下,我们建议使用受控组件(也就是用React的state来控制表单元素的value值)来实现表单。在一个受控组件里,表单数据被React组件处理。另一种方案就是非控制组件,这样的话表单数据就被DOM本身所处理。

要写一个非控制组件,来替代写一个事件处理函数来处理每一次state的更新,你可以使用ref引用来从DOM里获取表单的value值。

举个例子,这段代码在一个非受控组件里接受单个属性:

class NameForm extends React.Component {  constructor(props) {    super(props);    this.handleSubmit = this.handleSubmit.bind(this);  }  handleSubmit(event) {    alert('A name was submitted: ' + this.input.value);    event.preventDefault();  }  render() {    return (      
); }}

由于一个非受控组件将数据源保留在了DOM里,那么使用非受控组件来整合React和非React代码就会更容易些。如果你想快速开发也可以写稍微少一点的代码。否则,你应该常用受控组件。

如果你还是不知道在特殊情况下你应该使用什么类型的组件,你也许看看这篇文章可以得到帮助()。

默认值

在React渲染的生命周期中,表单元素中的value属性会覆盖DOM中的元素。而使用非受控组件,你经常想要让React指定初始value值,但是不再控制之后的更新。为了解决这个问题,你可以指定defaultValue属性替代value值。

render() {  return (    
);}

同样,<input type="checkbox">和<input type="radio">支持dedaultChecked属性,<select>和 <textarea>支持defaultValue。

文件输入标签
在HTML中,<input type="file"> 可以让用户从其设备存储中选择一个或多个文件上传到服务器,或通过File API进行操作。
在React中,<input type="file" /> 始终是一个不受控制的组件,因为它的值只能由用户设置,而不是以编程方式设置。
您应该使用File API与文件进行交互。以下示例显示如何创建ref节点以访问提交处理程序中的文件:
class FileInput extends React.Component {  constructor(props) {    super(props);    this.handleSubmit = this.handleSubmit.bind(this);  }  handleSubmit(event) {    event.preventDefault();    alert(      `Selected file - ${
this.fileInput.files[0].name}` ); } render() { return (
); }}ReactDOM.render(
, document.getElementById('root'));

转载于:https://www.cnblogs.com/hahazexia/p/6479520.html

你可能感兴趣的文章
Android Runtime Stats
查看>>
InstallShield卸载状态
查看>>
CentOS7 修改主机名
查看>>
小工具:天气查询 Vs自定义设置 DevGridControl中GridView排序问题 小工具:火车票查询 小工具:邮件发送 小工具:截图&简单图像处理...
查看>>
11.QT-布局管理器(Box,Grid,Form,Stacked)
查看>>
用 Anaconda 完美解决 Python2 和 python3 共存问题
查看>>
易语言飞扬学习
查看>>
Android 自定义Android ORM 框架greenDAO数据库文件的路径
查看>>
python程序打包成.exe
查看>>
oc懒加载 & swift lazy
查看>>
CUDA 编程的基本模式
查看>>
git命令行解决冲突文件步骤
查看>>
List、Map、Set三个接口,存取元素时,各有什么特点?
查看>>
js进阶 12-6 监听鼠标滚动事件和窗口改变事件怎么写
查看>>
HttpClient的基本使用
查看>>
Tomcat 7服务器线程模型
查看>>
idea设置断点,对于for循环,到指定次数时停止
查看>>
lua中面向对象(class)实现探索(一)(转)
查看>>
Model元数据定制与Model模板
查看>>
JS异常简单处理
查看>>