一、不可控组件

 <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;

最新文章

  1. 用字体在网页中画Icon图标
  2. android AsyncTask介绍
  3. 【001:go语言的一些语法基础】
  4. MySQL 的 utf8_general_ci 和 utf8_unicode_ci 有什么区别,应如何选择?
  5. js获取当前页面信息
  6. poj3687 拓扑序
  7. HBase-java api 基本操作
  8. Redis - 环境的安装配置
  9. [AngularJS + Webpack] require directives
  10. Union和Union All的差别
  11. ORA-00119: invalid specification for system parameter LOCAL_LISTENER
  12. Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下
  13. JavaI/O体系详解
  14. 首次使用AndroidStudio创建hello world遇到的坑!(Mac系统下)
  15. Spring(一)Spring介绍
  16. angular学习笔记-关于ng-class的那些事儿
  17. 【逆向工具】IDA使用1-VS2015版本debug查找Main函数,加载符号文件
  18. linux write/wall 1
  19. Aladdin and the Flying Carpet
  20. bzoj千题计划193:bzoj2460: [BeiJing2011]元素

热门文章

  1. LeetCode 1103. Distribute Candies to People (分糖果 II)
  2. 华东交通大学2018年ACM“双基”程序设计竞赛 C. 公式题 (2) (矩阵快速幂)
  3. C#标准的事件模型
  4. 在普通类中获取Spring管理的bean
  5. 【转载】C# 开源库大全非常好
  6. shell 命令 链接文件 ln
  7. mac NTFS 关于错误-36,rm Input/output error
  8. LightOJ 1151 Snakes and Ladders 期望dp+高斯消元
  9. Android开发 navigation入门详解
  10. python读文件判断是否已到EOF