关于React处理input的方法和多个input共用一个方法(不用jQuery)
关于React处理input的方法和多个input共用一个方法(不用jQuery)
前言: 笔者目前是一家公司的前端实习生,由于公司要求,前端使用的是React框架,而且不使用jQuery,由于以前在校的时候没有开发经验,加上对react也没有了解过,实习遇到的大大小小的问题也不少,期间不断的面向百度,和CSDN编程,在这里把开发遇到的问题以及解决方法和大家分享一下。(新手编程,存在错误望大佬纠正)
React处理单个input的方法
在React开发当中,由于React的特性,对input进行处理时往往要给它一个value然后还得使用onChange方法去setstate它的状态,处理常规单个input如下
<input
placeholder = '----------请输入--------'
onChange = {this._onInput1}
value = {this.state.input1}//给个value让他变为可控
>
</input>
给inpu一个value和onChange方法让他可控
_onInput1 = (event) =>{
this.state.input1 = event.target.value//这里获取input里输入的值value
this.setState(this.state)//更新state
console.log('这里',this.state.input1)
}
这里在它的onchange方法里 先通过 target获取输入框value的值 再进行setstate方法改变state的状态
这里的this.state还需要初始化一下,效果如下
笔者在工作中遇到了 有很多个input的情况 一个一个去setstate虽然也可以 但是代码量很大,通过不断的查找资料发现了几个适用的方法
处理多个input时的方法一
这个方法比较笨重但也是可行的 其中利用了switch函数当然if也可以来对比是哪一个input
<input
placeholder = '----------请输入--------'
onChange = {this._onInput2.bind(this,1)}
value = {this.state.inputone}//给个value让他变为可控
>
</input>
<input
placeholder = '----------请输入--------'
onChange = {this._onInput2.bind(this,2)}
value = {this.state.inputtwo}//给个value让他变为可控
>
</input>
这里需要给onchange的方法里传参数去判断是哪一个input
_onInput2 = (type,event) =>{//第一个是传过来的参数第二个是event
switch (type){
case 1:
this.state.inputone = event.target.value//这里获取input里输入的值value
this.setState(this.state)//更新state
console.log('第一个',this.state.inputone)
break;
case 2:
this.state.inputtwo = event.target.value//这里获取input里输入的值value
this.setState(this.state)//更新state
console.log('第二个',this.state.inputtwo)
break;
}
}
onchange方法基本上换汤不换药,只是多个一个判断,这个方法也是过于繁琐 还有
React处理多个input方法二(最优)
这个方法的重点在于给每一个input都设置一个name 唯一属性,切记 name设置的必须和value一样
<input
placeholder = '----------请输入--------'
onChange = {this._onInput3}
name = 'inputs'//注意必须和value的一样
value = {this.state.inputs}//给个value让他变为可控
>
</input>
<input
placeholder = '----------请输入--------'
onChange = {this._onInput3}
name = 'inputa'//注意必须和value的一样
value = {this.state.inputa}//给个value让他变为可控
>
</input>
这是它的方法
_onInput3 =(event)=>{
this.state.inp[event.target.name] = event.target.value//通过name来确定是哪一个value
this.setState(this.state)
console.log('都在这里',this.state.inp)
}
这里如果你是做一个搜索的操作时候尽量加一个空 因为如果 this.state.xxx = 'defined’的话会变为不可控状态会报错,这种情况就是 给 this.state.xxx || ""就可以了
这种方法就大大的节约了代码量 在react里实现不用jquery处理多个input的操作
结语:实习生小白,如果有写得不对的或者还有更好的方法欢迎评论留言谢谢大家
本文地址:https://blog.csdn.net/weixin_45872877/article/details/107287625