码迷,mamicode.com
首页 > 其他好文 > 详细

React-表单处理

时间:2020-02-23 20:07:52      阅读:74      评论:0      收藏:0      [点我收藏+]

标签: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>
    )
  }
}

React-表单处理

标签:tst   使用   super   console   lse   inpu   change   来源   his   

原文地址:https://www.cnblogs.com/xiaowzi/p/12353155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!