当前位置:首页 > 日记 > 正文

基于React实现表单数据的添加和删除详解

基于React实现表单数据的添加和删除详解

前言

最近在学习React,做了一个简单的Demo,用以自勉及和有需要的朋友们参考学习。

实现功能

在输入框中输入数据后,点击保存按钮,数据将会逐一显示在输入框下方,点击保存后显示的任何一条数据,该数据即可被删除。

实现思路

在开始实现之前,我们需要理清我们的思路,这样才能更好地去完成预定功能。

  1. 点击保存按钮时,输入框中的数据读取,可通过onChange绑定事件,获得输入框数据:e.target.value
  2. 自定义一个事件,输入数据后,点击保存按钮时,数据的存储操作交由该事件完成
  3. 当不断点击保存按钮时,数据应该是多个的,可选用数组来存储数据
  4. 数组中,数组的索引是唯一表示一个数据的方式,数据的操作可通过索引进行

实现过程

class ReactDemo extends React.Component{ render(){ return(  <div>  <input />  <button>点击保存</button>  </div> ) }}ReactDOM.render(<ReactDemo />,document.getElementById('app'))

这是本次Demo的雏形,接下来我们将会在这上面一点一点地做修改,进行功能的完善。

此时,表单为非受控组件,也就是普通的组件,在输入框中输入任何数据,在输入框内均会显示。

React组件提供了this.state以及this.setState,利用它们,我们可以十分方便地管理、更新组件的状态。

 constructor() { super() this.state = {  val: '',  arr: [] } }

this.state通常在构造函数内部进行初始化,其值为对象,本例中,val用于保存输入框中的值,初始值为空字符串;arr是个数据,用于存储多个数据。

 handleData(e) { this.setState({  val: e.target.value }) }

这里,this.setState会将val的值更新为e.target.value,当组件状态值(这里为val)发生改变,组件就会自动调用render()重新渲染UI 。

 onButtonClick(e) {  var val = this.state.val  this.setState({  arr: [val, ...this.state.arr]  }) }

展开运算符(…)是ES6的语法,它允许一个表达式在某处展开,利用这一特性,可将数组元素逐一展开:...this.state.arr,让val总是成作为数组的第一个元素,组成新数组[val, ...this.state.arr]后,赋给arr。

 onDelete(index, e) { this.setState({  arr: this.state.arr.filter((elem, i) => index !== i) }) }

通过数组的索引对数据进行删除操作, [].filter()接受一个方法作为它的参数,并返回匹配条件(index !== i)的元素组成的新数组。

 {arr1.map((i,index) =>( <div onClick={this.onDelete.bind(this,index)}>{i}</div> ))}

这种JSX的语法是由facebook官方提出的一种十分简明的写法,个人觉得好用到爆。[].map()对数组元素依次进行函数的调用,并返回函数调用结果组成的新数组。bind(this,index)的第二个参数index为原函数onDelete(index,e)省略掉的第一个参数。

好了,大功告成,让我们一起来看下效果吧…

添加效果

删除后效果

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

相关文章

ps怎样制作一个超逼真的红苹果?

ps怎样制作一个超逼真的红苹果?

超逼真,电脑软件,ps,ps怎样制作一个超逼真的红苹果图片?运用PHOTOSHOP软件,可以很简单的制作一张逼真的红苹果图片,无论是立体效果的表现和质感的体验都非常的漂亮,下面和小编一起来看看具体步骤吧。ps制作一个逼真红苹果图片步骤:我们先来看看…

在PPT2003中怎么设置为默认启动方

在PPT2003中怎么设置为默认启动方

启动方式,默认,设置为,电脑软件,  许多用户在安装了多个版本的PPT,由于该软件版本越高启动的速度就越慢,所以想以PPT2003的版本为默认启动方式。以下是小编为您带来的关于PPT2003设置为默认启动方式,希望对您有所帮助。PPT2003设置为默认启…

如何打印多张包含备注的ppt幻灯

如何打印多张包含备注的ppt幻灯

幻灯,备注,多张,电脑软件,ppt,  微软的Powerpoint打印只给了我们两个选择:一是用一页纸打印多张不带备注的讲义,另一个是在一页纸上打印一张带备注的PPT。如果大家需要在一页纸上打印多张带备注的Powerpoint幻灯片,该如何做呢?下面小编教大家…

在wps2016文字中怎么添加删除水印

在wps2016文字中怎么添加删除水印

删除,文字,方法,水印,电脑软件,  wps2016出来了,没有体验的朋友对它的界面比较陌生,很多朋友不知道wps2016如何插入水印,那就来学习一下wps2016添加删除水印方法。以下是小编为您带来的关于wps2016添加删除水印方法,希望对您有所帮助。wps201…

php简单实现单态设计模式的方法分

php简单实现单态设计模式的方法分

简单实现,方法,设计模式,电脑软件,php,本文实例讲述了php简单实现单态设计模式的方法。分享给大家供大家参考,具体如下:单态设计模式通常包含以下三点:· 一个私有的 构造方法;(确保用户无法通过创建对象对其进行实例化)· 一个公有的 静态的 方…

PS置换滤镜怎么用?PS置换滤镜的贴

PS置换滤镜怎么用?PS置换滤镜的贴

滤镜,贴图,怎么做,效果,电脑软件,Photoshop置换滤镜怎么用?Photoshop置换滤镜的贴图效果怎么做?本教程以给美女大腿添加条纹国旗为例,简单的介绍了置换滤镜的贴图效果的制作方法,看完小伙伴会发现如果你想贴图到一个物体上,图与被贴物的走势,大…

JSP 中Session的详解及原理分析

JSP 中Session的详解及原理分析

原理分析,详解,电脑软件,JSP,Session,JSP 中Session的理解:一、Session简单介绍在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可…

Excel2007怎么输入身份证号码

Excel2007怎么输入身份证号码

输入,方法,身份证号码,电脑软件,  Excel2007中怎么输入身份证号码?我们在用到excel储存客户信息的时候,将一长串号码输进去后,就发现整个单元格的内容就变成了科学计数法,怎样才能输入有效的身份证号码呢?下面给大家介绍Excel2007输入身份证…

jQuery使用DataTable实现删除数据

jQuery使用DataTable实现删除数据

加载,删除数据,功能,电脑软件,jQuery,问题描述:利用jQuery Datatable和artTemplate组合来做的表格。但是当删除数据时,需要重新加载table里的数据。但是问题是datatable并没有直接的重新渲染,反而给数据累加上了。解决办法:经过查看高人的blog,…

基于ASP.NET实现日期转为大写的汉

基于ASP.NET实现日期转为大写的汉

日期,汉字,电脑软件,ASP,NET,这篇文章主要介绍的是利用ASP.NET将日期格式转为大写汉字,比如: “2013年12月3日” 转换成 “贰零壹叁年拾贰月叁日”,下面一起来看看怎么实现。一样话不多说,直接上代码//年份转换为大写汉字 public static strin…

硬RAID与软RAID的区别

硬RAID与软RAID的区别

区别,电脑软件,RAID,什么是RAID?RAID是英文Redundant Array of Independent Disks的缩写,翻译成中文即为独立磁盘冗余阵列,或简称磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比…

js实现扫雷小程序的示例代码

js实现扫雷小程序的示例代码

示例代码,程序,电脑软件,js,初学javascript,写了一个扫雷程序练练手!扫雷规则及功能扫雷想必大家都不陌生,就是windows上点击排雷的小游戏,它的主要规则有1.左键点击显示当前格子是否为雷,如果为雷的话,GameOver啦,如果不是雷的话,这个格子会显示周…