我们今天模仿ToDoList进行一个简单的增,删,改,查的操作

可参考官网  http://www.todolist.cn/

下边直接上代码

 import React from 'react';
class App extends React.Component{
//构造函数
constructor(){
super()
this.state={
arry:[], //展示列表
str:'' //记录输入框的值
}
};
//加载时对数组进行操作
componentWillMount(){
// 获取本地数据赋值给myArry
var myArry= window.localStorage.getItem('myArry')
//判断myArry是否是空的,如果myArry是空的,就让它等一个空数组
if(myArry == null || myArry ==''){
myArry=[]
//如果myArry不是空的,拿到的数据是字符串需要通过split进行转换成数组
}else{
myArry = myArry.split(',')
}
this.setState ({
//转换过的数组赋值给arry
arry:myArry
})
};
//按钮点击事件方法
btn(){
var val = this.refs.val.value;
if(this.refs.val.value ===''){
alert("请输入")
}else{ this.setState({
//运用扩展运算符添加数据到arry
arry:[...this.state.arry,val]
},function(){
// 更新本地数据
window.localStorage.setItem('myArry',this.state.arry)
})
}
// 输入框值清空
this.refs.val.value='';
}
render(){
return(
<React.Fragment>
<input type='text' ref='val' onKeyDown={(e)=>{
//键盘事件
if(e.keyCode===13){
// 调用上面添加的函数
this.btn()
}
}} />
<button onClick={this.btn.bind(this)}>提交</button>
<ul>
{/* 对数组进的遍历渲染 */}
{this.state.arry.map((m,i)=>{
return(
// key属性为唯一值,没有该属性,浏览器会报警告信息,在做添加操作时会出bug
<li key={i}>{m} &nbsp;&nbsp;
<button onClick={()=>{
//通过prompt弹框获取要修改的内容
var prompt = window.prompt()
// 判断是不是确认修改
if(prompt != null){
var list = this.state.arry
//在arry数组中找到下标i设置修改个数为1,修改的内容为list
list.splice(i,1,prompt)
this.setState({
//修改过后把list值重新赋给arry
arry:list
},function(){
window.localStorage.setItem('myArry',this.state.arry)
})
} }}>修改</button>&nbsp;&nbsp;&nbsp;
<button onClick={()=>{
// 对数组进行截取下标为i 删除个数为1
this.state.arry.splice(i,1)
this.setState({
//截取过后把list值重新赋给arry
arry:this.state.arry
},function(){
window.localStorage.setItem('myArry',this.state.arry)
})
}}>删除</button> </li>
)
})}
</ul>
</React.Fragment>
)
}
} export default App;

我们看一下效果

最新文章

  1. stm32GPIO的速度是什么意思
  2. ((uchar*)(Img1-&gt;imageData + Img1-&gt;widthStep*pt.y))[pt.x] 的 具体含义
  3. JDBC获取sql server存储过程查询结果集(没有出参)
  4. SQL脚本IN在EF中的应用
  5. 使用C#开发屏幕保护程序步骤
  6. 安卓ROOT后禁用/隐藏导航栏/虚拟按键
  7. 一个简单且丑陋的js切换背景图片基础示例
  8. CentOS7 升级python同时解决yum损坏问题
  9. 10.6 noip模拟试题
  10. ffmpeg常用参数一览
  11. UVA580-Critical Mass
  12. 安装vnc远程连接CentOS桌面
  13. 调用接口http封装
  14. javascript模块化编程库require.js的用法
  15. Oracle查询优化改写--------------------报表和数据仓库运算
  16. 勤拂拭软件Android开发之旅(1) 之 Android 开发环境搭建
  17. JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
  18. Maven常用的几个命令
  19. C# 匿名类型如何使用
  20. Spring Security教程(二):通过数据库获得用户权限信息

热门文章

  1. Linux_Samba详解
  2. 笨办法学python 13题:pycharm 运行
  3. CSS——插入形式 基本格式 常见css代码
  4. Windows.命令行(CMD)_执行命令&amp;环境变量
  5. IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa
  6. ball小游戏
  7. 秒懂Vuejs、Angular、React原理和前端发展历史
  8. [LeetCode] 95. 不同的二叉搜索树 II
  9. CSS 属性小记
  10. bootstrap使用总结(carousel设置大小。item设置大小,img设置大小)