使用一个事件处理多个元素

1给表单元素添加name属性 名称域state相同

2根据表单元素获取对应值

3在唱歌事件处理程序中通过[name]修改对应的state

//导入react
import React from 'react'

import ReactDOM from 'react-dom'
//导入组件

// 约定1:类组件必须以大写字母开头

// 约定2:类组件应该继承react.component父类 从中可以使用父类的方法和属性

// 约定3:组件必须提供render方法

// 约定4:render方法必须有返回值

class HelloWorld extends React.Component {
	//初始化state

	state = {
		txt: '1',
        content:"2",
        sex:"nan",
        isChecked:true
	}
	handleChange = (e) => {
        //获取当前的dom对象
        const target=e.target
        //根据类型获取值
        const value =target.type==="checkbox"?target.checked:target.value
        //获取name
        const name=target.name
		this.setState({
			[name]: value,
		})
	}
    // handleChangeValue = (e) => {
	// 	this.setState({
	// 		value: e.target.value,
	// 	})
	// }
    // handleChangeSelect = (e) => {
	// 	this.setState({
	// 		value: e.target.select,
	// 	})
	// }
    // handleChangeCheck = (e) => {
	// 	this.setState({
	// 		checked: e.target.checked,
	// 	})
	// }
	//抽离出来 this报错 事件处理中的this为underfine

	render() {
		return (
			<div>
				<input
					type="text"
                    name="txt"
					value={this.state.txt}
					onChange={this.handleChange}
				/>
                <textarea name="content" onChange={this.handleChange} value={this.state.content}></textarea>
                <select name="sex" onChange={this.handleChange} value={this.state.sex}>
                    <option value="nan">男</option>
                    <option value="nv">女</option>
                </select>
                <input
					type="checkbox"
                    name="isChecked"
					checked={this.state.isChecked}
					onChange={this.handleChange}
				/>
			</div>
		)
	}
}

ReactDOM.render(<HelloWorld />, document.getElementById('root'))

运行结果