react实现关于文本框的双向绑定

React不支持像Vue中的v-model那样直接的双向数据绑定,但可以通过处理onChange事件和设置state来模拟实现。在React中,对于表单元素,需要结合value属性、readOnly或onChange事件来管理状态。获取文本框最新文本有三种方式:通过document.getElementById、ref或事件对象的e.target。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 在 Vue 中,有 v-model 指令来实现双向数据绑定,但是,在 React 中, 根本没有指令的概念,因此React 默认也不支持 双向数据绑定 
  •  React 只支持,把数据从 state 上传输到 页面,但是,无法自动实现数据从 页面 传输到 state 中 进行保存,也就是,React 不支持数据的自动逆向传输, 只是实现了数据的单向绑定 
  •  注意:如果为 表单元素,提供了 value 属性绑定,那么,必须同时为 表单元素 绑定 readOnly, 或者提供要给 onChange 事件 。
  • 如果想实现根据文本框输入的内容来改变state中的数据,然后重新传输到页面上,实现数据的双向绑定,下面代码可以实现。

 

import React from 'react'

export default class BindThis extends React.Component{
  constructor(props){
    super(props)
    this.state={
      msg:'这是默认的msg'
    }

  }

  render(){
    return <div>

      <h3>{this.state.msg}</h3>
      {/* 如果提供了readOnly,表示这个元素只读的不能被修改  */}
      {/* 如果提供了onChange 表示,这个元素的值可以被修改,但是,要自己定义修改的逻辑  */}
      <input type="text" style={{ width: '100%' }} value={this.state.msg} onChange={this.txtChanged} ref="txt" />
    </div>
  }

  // 为 文本框 绑定 txtChanged 事件
  txtChanged = (e)=>{
    // console.log('ok')
    // 如果想让 文本框在触发 onChange 的时候,同时把文本框最新的值,保存到 state 中,那么,我们需要手动调用 this.setState

    // console.log(e.target.value);
    console.log(e)
    this.setState({
      msg: e.target.value
    })
  }

 
}

注意: 

获取文本框中 最新文本的3种方式:
    1. 使用 document.getElementById 来拿
    2. 使用 ref 来拿   console.log(this.refs.txt.value);
    3. 使用 事件对象的 参数 e 来拿   e.target 就表示触发 这个事件的 事件源对象,得到的是一个原生的JS DOM 对象 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值