🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

React:表单

HTML 的表单元素有自己的内部数据(State),用户在文本框里输入内容,勾选了复选框,这些行为会直接修改表单元素的内部数据。在 React 里,修改数据都要通过 setState 去做。下面这个练习可以帮你理解在 React 组件里的使用表单。

添加一个 HelloForm 组件:

class HelloForm extends Component {
  state = {
    text: ''
  }

  handleChange = (event) => {
    this.setState({
      text: event.target.value
    })
    console.log('输入:', event.target.value)
  }

  handleSubmit = (event) => {
    event.preventDefault()
    console.log('提交:', this.state.text)
  }

  render () {
    return (
      <form onSubmit={ this.handleSubmit }>
        <input type="text"
          value={ this.state.value }
          onChange={ this.handleChange } />
      </form>
    )
  }
}

组件的 render 方法里,有一个表单,里面有个文本框元素:

<form onSubmit={ this.handleSubmit }>
  <input type="text"
    value={ this.state.text }
    onChange={ this.handleChange } />
</form>

在表单元素(form)上,用了 onSubmit 绑定一个提交事件,这个事件用组件的 handleSubmit 来处理。在 text 类型的 input 元素上,绑定了组件里的  text 这个 State,然后又绑定了 change 事件,文本框里发生变化,就会用组件的 handleChange 来处理。

  handleChange = (event) => {
    this.setState({
      text: event.target.value
    })
    console.log('输入:', event.target.value)
  }

组件的 handleChange 是用类的属性初始化器这种形式定义的,这样我们就可以在它里面得到正确的 this,也就是组件实例本身。不然你得明确地绑定 this 。在它里面用了 setState 设置了组件里的 text 的值,对应的值就是事件对象里的 target 下面的 value 的值。这个值就是用户在表单里输入的内容。console.log 输出了这个 value 的值。

  handleSubmit = (event) => {
    event.preventDefault()
    console.log('提交:', this.state.text)
  }

提交表单会执行 handleSubmit ,它里面用了 event.preventDefault 防止表单的默认行为。然后用 console.log 输出了组件里的 text 这个数据的值,这个 text 的值会实时地被 handleChange 更新成用户在文本框里输入的内容。

App 组件里,用一下 HelloForm 这个组件:

import React, { Component } from 'react'

class App extends Component {
  state = {
  }

  render () {
    return (
      <div>
        <HelloForm />
      </div>
    )
  }
}

控制

 

React
微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点