好客租房37-多表单元素优化


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

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 (
            


                                     type="text"
                    name="txt"
                    value={this.state.txt}
                    onChange={this.handleChange}
                />
               
               
                                    type="checkbox"
                    name="isChecked"
                    checked={this.state.isChecked}
                    onChange={this.handleChange}
                />
            

        )
    }
}
 
ReactDOM.render(, document.getElementById('root'))
运行结果

相关