React学习之旅----获取表单输入的值,双向绑定

react中实现双向绑定input输入框值

import React, { Component } from 'react';
class Event extends Component {
  constructor(props) {
    super(props)
    this.state = {
      title: '事件对象练习',
      username: ''
    }
  }
  run = (e) => {
    // alert(this.state.title)
    console.log(e)
    alert(e.target) // 获取执行当前事件的dom节点
    e.target.style.background = 'red'
    // 获取自定义属性
    console.log(e.target.getAttribute('aid'))
  }
  inputChange = (e) => {
    console.log(e.target.value)
    this.setState({
      username: e.target.value
    })
  }
  getInput = () => {
    alert(this.state.username)
  }
  render () {
    return (
      <div>
        <h2>{this.state.title}</h2>
        <h2>{this.state.username}</h2>
        <button aid='123' onClick={this.run}>获取数据</button>
        <hr />
        <h2>表单事件</h2>
        {/* 获取表单的值
        1 监听表单的改变事件
        2 在改变的时间里面获取表单输入的值
        3 把表单输入的值赋给username this.setState({})
        4 点击按钮的时候获取state里面的username值 this.state.username
         */}
        <input onChange={this.inputChange} /><button aid='123' onClick={this.getInput}>获取input数据</button>
      </div>
    )
  }
}
export default Event

第二种方法,通过ref值获取

import React, { Component } from 'react';
class List extends Component {
  constructor(props) {
    super(props)
    this.state = {
      title: '事件对象练习',
      username: ''
    }
  }
  run = (e) => {
    // alert(this.state.title)
    console.log(e)
    alert(e.target) // 获取执行当前事件的dom节点
    e.target.style.background = 'red'
    // 获取自定义属性
    console.log(e.target.getAttribute('aid'))
  }
  inputChange = (e) => {
    let value = this.refs.username.value
    console.log(value)
    this.setState({
      username: value
    })
  }
  getInput = () => {
    console.log(this.state.username)
  }
  render () {
    return (
      <div>
        <h2>{this.state.title}</h2>
        <h2>{this.state.username}</h2>
        <button aid='123' onClick={this.run}>获取数据</button>
        <hr />
        <h2>表单事件</h2>
        {/* 获取表单的值
        1 监听表单的改变事件
        2 在改变的时间里面获取表单输入的值
        3 把表单输入的值赋给username this.setState({})
        4 点击按钮的时候获取state里面的username值 this.state.username
         */}
        <input ref='username' onChange={this.inputChange} /><button aid='123' onClick={this.getInput}>获取input数据</button>
      </div>
    )
  }
}
export default List

有时候想获取键盘输入

import React, { Component } from 'react';
class List extends Component {
  constructor(props) {
    super(props)
    this.state = {
      title: '事件对象练习',
      username: ''
    }
  }
  run = (e) => {
    // alert(this.state.title)
    console.log(e)
    alert(e.target) // 获取执行当前事件的dom节点
    e.target.style.background = 'red'
    // 获取自定义属性
    console.log(e.target.getAttribute('aid'))
  }
  inputChange = (e) => {
    let value = this.refs.username.value
    console.log(value)
    this.setState({
      username: value
    })
  }
  getInput = () => {
    console.log(this.state.username)
  }
  inputKeyUp = (e) => {
    console.log(e.keyCode)
    if (e.keyCode === 13) {
      alert(e.target.value)
    }
  }
  render () {
    return (
      <div>
        <h2>{this.state.title}</h2>
        <h2>{this.state.username}</h2>
        <button aid='123' onClick={this.run}>获取数据</button>
        <hr />
        <h2>表单事件</h2>
        {/* 获取表单的值
        1 监听表单的改变事件
        2 在改变的时间里面获取表单输入的值
        3 把表单输入的值赋给username this.setState({})
        4 点击按钮的时候获取state里面的username值 this.state.username
         */}
        <input ref='username' onChange={this.inputChange} /><button aid='123' onClick={this.getInput}>获取input数据</button>
        <hr />
        <input ref='username' onKeyUp={this.inputKeyUp} /><button aid='123' onClick={this.getInput}>获取键盘输入数据</button>
      </div>
    )
  }
}
export default List

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞朋哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值