受控组件
受react控制的表单元素
将表单元素的value属性与state进行绑定
绑定change事件修改state的值
class Abc extends React.Component{state={txt:''}handleChange = e =>{this.setState({txt:e.target.value})}render(){return (<input value={this.state.txt} onChange={this.handleChange}/>)}}
多表单优化
一个组件中存在多个表单时,每个表单写一个对应的处理程序就会变得很麻烦
以下代码是对多表单情况进行的优化
1:为每个表单都添加一个name属性,名称与state中绑定的内容相同
2:根据name获取不同的值
class Abc extends React.Component{state={txt:''}handleChange = e =>{// 获取当绑定的元素const target = e.target// 判断表单绑定的是否为checkbox 是复选或单选 否 其他标签 获取值const value = target.type==='checkbox'?target.checked:target.value// 获取name值const name = target.name// 通过ES6的动态方法修改表单对应的值this.setState({[name]:value})}render(){return (<input name='txt' value={this.state.txt} onChange={this.handleChange}/>)}}
非受控组件
非受控组件即不受到react控制的组件
使用ref获取内容
class Abc extends React.Component{constructor(){super()// 创建一个ref对象// this.txtRef值ref对象名字可以任意this.txtRef = React.createRef()}// 点击事件handleClick=()=>{// 表单输入的内容console.log(this.txtRef.current.value)}render(){return (// 绑定ref<input ref={this.txtRef} />// 点击事件获取输入的内容<button onClick={this.handleClick}>获取表单内容</button>)}}
