标签:tst 使用 super console lse inpu change 来源 his
首先 html 中每个表单元素都有自己的属性,自己管理自己, 但是 react 希望每个表单属性值都交给 state 来进行处理和统一的管理,这时候就把两者进行了结合
受控组件就是将 value 值交给 state 管理的表单元素
1、控制表单元素值的来源
2、控制表单元素值的变化
import React from ‘react‘ export default class App extends React.Component { // 1.控制表单元素值的来源 state = { value: ‘1‘ } // 2.控制表单元素值的变化 handle = e => { this.setState({ value: e.target.value }) } render() { return ( <div> <input value={this.state.value} onChange={this.handle} /> </div> ) } }
1、给表单元素添加 name 属性,值等于对应的 state
2、判断表单元素类型
3、获取元素的名称
4、根据获取的 name 值修改 state
import React from ‘react‘ export default class App extends React.Component { state = { inputVal: ‘‘, isChecked: false } handleChange = e => { // 2.判断表单元素类型 const value = e.target.type === ‘checkbox‘ ? e.target.checked : e.target.value // 3.获取元素的名称 const name = e.target.name // 4.根据获取的 name 值修改 state this.setState({ [name] : value }) } render () { return ( <div> {/* 1、给表单元素添加 name 属性,值等于对应的 state */} {/* 文本框 */} <input type="text" value={this.state.inputVal} name="inputVal" onChange={this.handleChange}/> {/* 复选框 */} <input type="checkbox" checked={this.state.isChecked} name="isChecked" onChange={this.handleChange} /> </div> ) } }
1、绑定 ref 属性
2、创建ref
3、获取表单值
import React from ‘react‘ export default class App extends React.Component { constructor() { super() // 2、创建ref this.inputRef = React.createRef() } inputChange = e => { // 3、获取表单值 console.log(this.inputRef.current.value) } render() { return ( <div> {/* 1、绑定 ref 属性 */} <input ref={this.inputRef} onChange={this.inputChange} /> </div> ) } }
标签:tst 使用 super console lse inpu change 来源 his
原文地址:https://www.cnblogs.com/xiaowzi/p/12353155.html