React学习笔记(十)受控组件
2018-01-26 09:38
141 查看
//受控组件 class NameForm extends React.Component{ constructor(props){ super(props); this.state = {value:''} this.handleChange = this.handleChange.bind(this) this.handleSubmit = this.handleSubmit.bind(this) } handleChange(event){ this.setState({value:event.target.value}) } handleSubmit(event){ alert('A name was submitted : ' + this.state.value) event.preventDefult(); } render(){ return( <form onSubmit={this.handleSubmit}> <label> name: <input type="text" value={this.state.value} onChange={this.handleChange}/> </label> <input type="submit" value="Submit"/> </form> ) } } ReactDOM.render( <NameForm/>, document.getElementById('name') ) //textarea标签 class EssayForm extends React.Component{ constructor(props){ super(props); this.state = { value:'Please write an essay about your favorite DOM element.' } this.handleChange = this.handleChange.bind(this) this.handleSubmit = this.handleSubmit.bind(this) } handleChange(event){ this.setState({value:event.target.value}) } handleSubmit(event){ alert('An essay was submitted ' + this.state.value) } render(){ return( <form onSubmit={this.handleSubmit}> <label> name: <textarea value={this.state.value} onChange={this.handleChange}/> </label> <input type="submit" value="submit"/> </form> ) } } ReactDOM.render( <EssayForm/>, document.getElementById('name2') ) //select标签 class FlavorForm extends React.Component{ constructor(props){ super(props) this.state = {value:'coconut'} this.handleChange = this.handleChange.bind(this) this.handleSubmit = this.handleSubmit.bind(this) } handleChange(event){ this.setState({value:event.target.value}) } handleSubmit(event){ alert('You favorite flavor is: ' + this.state.value) event.preventDefault(); } render(){ return( <form onSubmit={this.handleSubmit}> <label> Pick your favorite La Croix flavor: <select value={this.state.value} onChange={this.handleChange}> <option value="grapefruit">grapefruit</option> <option value="lime">lime</option> <option value="coconut">coconut</option> <option value="mango">mango</option> <option value="grapefruit">grapefruit</option> </select> </label> <input type="submit" value="submit"/> </form> ) } } ReactDOM.render( <FlavorForm/>, document.getElementById('FlavorForm') ) //多个输入的解决方法 //当你有处理多个受控的input元素时,你可以通过给每个元素添加一个name属性,来让处理函数根据 event.target.name的值来选择做什么。 class Reservation extends React.Component{ constructor(props){ super(props) this.state = { isGoing:true, numberOfGuests:2 } this.handleInputChange = this.handleInputChange.bind(this) } handleInputChange(event){ const target = event.target, value = target.type === 'checkbox' ? target.checked : target.value, name = target.name this.setState({ [name]:value }) } render(){ return( <form> <label> is going: <input name="isGoing" type="checkbox" checked={this.state.isGoing} onChange={this.handleInputChange} /> </label> <br/> <label> number of guests: <input name="numberOfGuests" type="number" value={this.state.numberOfGuests} onChange={this.handleInputChange} /> </label> </form> ) } }ReactDOM.render( <Reservation/>, document.getElementById('Reservation') )
相关文章推荐
- 浅谈React受控与非受控组件
- React学习笔记(三)组件
- React:创建同时受控与非受控的组件
- 受控组件和非受控组件
- React受控组件与非受控组件
- react受控组件与 v非受控组件
- react数据单向流、受控组件、子父组件通信
- React学习(6)—— 高阶应用:非受控组件
- React学习笔记(四)组件拆分
- react中的受控组件,非受控组件;
- 浅谈react受控组件与非受控组件
- 1.17 受控组件和非受控组件
- react混合受控组件
- 从 0 到 1 实现 react - 9.onChange 事件以及受控组件
- react不受控组件(Uncontrolled Components)
- react受控组件和非受控组件
- React.js 官方文档摘记:非受控组件
- React 深度编程:受控组件与非受控组件
- 浅析React中的受控组件和非受控组件
- react学习笔记1之声明组件的两种方式