react 数据筛分绑定_在react中实现一个简单双向数据绑定

vue中的双向数据绑定非常的方便,那么如何在react中实现一个简单的双向数据绑定呢?

react实现一个简单的双向绑定


首先我们在input中添加一个onChange事件,然后把这个输入框的value绑定到state中

"商品名" onChange={ value={this.state.inpValu}/>
constructor(props) {        super(props)        this.state = {            inpValu:""        }    }

这个onChange事件会在这个input的值改变后触发,同时返回值,其中这个值的target下的value就是这个input当前的值,这样的话我们就只需要将这个值设置到state里input的value绑定的值就好了。

ProductName(e){        this.setState({            inpValu:e.target.value        })    }
这样的话就可以实现input的value的值改变,state中的值也会改变。state的值改变,input的value值也改变这样一个简单的双向数据绑定。值得注意的是:  通过setState来修改state的值的话,它是异步的。想要设置完后就获取里面的值需要在它第二个参数中传递一个回调函数,在这个回调中可以获取修改完的值
chongZhi (){   this.setState({ProductName:""},function () {       console.log(this.state.ProductName);   })}

封装事件处理


如果一个页面表单元素太多,每一个写一个change对应的事件处理方法,重复代码太多,你会发现不同的元素,事件处理程序,只是setState对应的键名不同,那可以考虑封装? 思路: 全都用一个事件处理程序,传不同的值进去就好了 代码如下:
constructor(){        super()        this.changeHandle = this.changeHandle.bind(this);        this.state={            name:"",            pwd:"",            email:""        }    }
render(){    let {name,pwd,email} = this.state;    return (       <div>           <input data-key="name" onChange={this.changeHandle} value={name}  type="text" />           <input data-key="pwd" onChange={this.changeHandle}  value={pwd}  type="text" />           <input data-key="email" onChange={this.changeHandle } value={email}  type="text"/>           <span>name:{name}span>           <span>pwd:{pwd}span>           <span>email:{email}span>       div>    )}
changeHandle(e){        e.preventDefault()        let key = e.target.dataset.key;        this.setState({[key]:e.target.value}) }

更多文章,请关注【bug收集】

582532331f648c3a271d822ef9fc5a55.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值