• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

如何用react做增删

react 搞代码 4年前 (2021-12-28) 22次浏览 已收录 0个评论

如何用react做增删

1、使用react做一个输入框,点击提交在下面列表展示,点击对应的列表项,删除该项,如下:

2、项目的数据结构,首先分析需求,一个input框,一个button,一个列表。可以把input和button看成一个组件,列表看成一个组件。在state中的数据结构可以设置为:

//state的数据结构
 this.state = {
 inputValue: '', //用于存放input的值
 list: []     //存放列表的值
}

input框功能实现,原理:input框绑定onChange事件,每当输入字符时,改变this.state.inputValue的值,React中当state或props中的值改变,render函数会重新执行。实现如下:

 //方法一:改变this.state.inputValue值,通过事件返回的e.target.value,获取输入框中的值
 <input type="text" onChange={this.handleChange} value={this.state.inputValue} />
 handleChange (e) {
     //同步setState
     this.setState({
         inputValue: e.target.value
     });
 }
 //方法二:在input框上设置ref属性,ref表示对组件真正实例的引用。
 //设置ref={(input) => {this.input = input}}表示,将当前input框中的value值,
 //绑定到this上,在handleChange方法中,便可以直接取input的值:this.input.value
 <input type="text"
        id="inputValue"
        onChange={this.handleChange}
        value={this.state.inputValue}
        ref={(input) => {this.input = input}}
 />
 handleChange (e) {
     const value = this.input.value;
     //异步setState,可以为异步方法,带有一个参数prevState,即为上一步state的内容,同时带有回调函数
     this.setState(() => ({
         inputValue: value
     }), () => {
         console.log('赋值完成!');
     });
 }

提交功能实现,原理:很容易就想到,当点击提交的时候,将input框中的值push到this.state.list即可。

<button onClick={this.handleSubmit}>提交</button>
 //提交添加UI列表
 handleSubmit () {
     this.setState((prevState) => ({
         list: [...prevState.list, prevState.inputValue],
         inputValue: ''
     }), () => { //回调函数
         console.log(this.ul.querySelectorAll('li').length);
     });
 }

将list的值在页面展示出来,可以通过map方法,循环li。

 this.state.list.map((item, index) => {
     return <li key={index}>{item}</li>
 })
 /*
     注:react中循环的时候,必须在每一项加上key的属性,不然控制台会报错,
     原因是:diff算法在循环的时候,会去匹配对应的key值。此处用index作为key值是不合理的做法,key值应该是唯一的,
     diff算法后面会详细讲到。
 */

点击li,删除当前li,原理:每一个li都有对应的index,点击li时,获取index,在list找到对应下标,然后delete即可。

 this.state.list.map((item, index) => {
     return <li key={index} onClick={this.handleDel<span style="color:transparent">来源gaodai#ma#com搞*代#码网</span>eteItem.bind(this, index)}>{item}</li>
 })
 //删除当前点击item
 handleDelete (index) {
     this.setState((prevState) => {
         const list = [...prevState.list];
         list.splice(index, 1);
         return {
             list: list
         }
     });
 }

更多React相关技术文章,请访问gaodaima搞代码网进行学习!

以上就是如何用react做增删的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何用react做增删

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址