使用一个事件处理多个元素
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'))
运行结果