react之可控组件与不可控组件
2024-10-07 23:42:25
一、不可控组件
<input type="text" defaultvalue="Hello React" />
如上:defaultvalue的值是固定的,这就是一个不可控组件
如果要获取input的value值,只有使用ref获取节点来获取值
二、可控组件
<input type="text" defaultvalue={this.state.value} />
如上:defaultvalue的值是根据状态确定的,只需要拿到this.state.value的值就可以了,
这里需要注意一下:使用value的值是不可以修改的,defaultValue的值是可以修改的
三、可控组件的优点
1、符合React的数据流
2、数据存储在state中,便于获取
3、便于处理数据
import React from 'react';
import ReactDOM from 'react-dom'; // 不可控组建,要是使用refs属性对DOM节点进行操作
class UnControll extends React.Component {
submitData = (e)=> {
var userInput1 = ReactDOM.findDOMNode(this.refs.userInput1).value;
var userInput2 = ReactDOM.findDOMNode(this.refs.userInput2).value;
alert(userInput1);
alert(userInput2)
e.preventDefault();
}
render(){
return (
<form onSubmit={this.submitData}>
{/*
在表单中,使用value是无法改变的,需要使用defaultValue
checked与defaultChecked同上
*/}
<input
type="text"
value="不可控组件"
ref="userInput1"
/>
<input
type="text"
defaultValue="不可控组件"
ref="userInput2"
/>
<button>提交</button>
</form>
)
}
} // 可控组建,不需要对DOM进行操作
class Controll extends React.Component {
state = { value:'可控组件' }
submitData = (e)=> {
alert(this.state.value);
e.preventDefault();
}
handleChange = (e)=>{
this.setState({
value:e.target.value
})
}
render() {
return (
<form onSubmit={this.submitData}>
<input
type="text"
defaultValue={this.state.value}
onChange={this.handleChange}
/>
<button>提交</button>
</form>
);
}
} export default Controll;
最新文章
- 用字体在网页中画Icon图标
- android AsyncTask介绍
- 【001:go语言的一些语法基础】
- MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什么区别,应如何选择?
- js获取当前页面信息
- poj3687 拓扑序
- HBase-java api 基本操作
- Redis - 环境的安装配置
- [AngularJS + Webpack] require directives
- Union和Union All的差别
- ORA-00119: invalid specification for system parameter LOCAL_LISTENER
- Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下
- JavaI/O体系详解
- 首次使用AndroidStudio创建hello world遇到的坑!(Mac系统下)
- Spring(一)Spring介绍
- angular学习笔记-关于ng-class的那些事儿
- 【逆向工具】IDA使用1-VS2015版本debug查找Main函数,加载符号文件
- linux write/wall 1
- Aladdin and the Flying Carpet
- bzoj千题计划193:bzoj2460: [BeiJing2011]元素
热门文章
- LeetCode 1103. Distribute Candies to People (分糖果 II)
- 华东交通大学2018年ACM“双基”程序设计竞赛 C. 公式题 (2) (矩阵快速幂)
- C#标准的事件模型
- 在普通类中获取Spring管理的bean
- 【转载】C# 开源库大全非常好
- shell 命令 链接文件 ln
- mac NTFS 关于错误-36,rm Input/output error
- LightOJ 1151 Snakes and Ladders 期望dp+高斯消元
- Android开发 navigation入门详解
- python读文件判断是否已到EOF