TodoList案例
2024-09-02 01:30:06
我们今天模仿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}
<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>
<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;
我们看一下效果
最新文章
- stm32GPIO的速度是什么意思
- ((uchar*)(Img1->;imageData + Img1->;widthStep*pt.y))[pt.x] 的 具体含义
- JDBC获取sql server存储过程查询结果集(没有出参)
- SQL脚本IN在EF中的应用
- 使用C#开发屏幕保护程序步骤
- 安卓ROOT后禁用/隐藏导航栏/虚拟按键
- 一个简单且丑陋的js切换背景图片基础示例
- CentOS7 升级python同时解决yum损坏问题
- 10.6 noip模拟试题
- ffmpeg常用参数一览
- UVA580-Critical Mass
- 安装vnc远程连接CentOS桌面
- 调用接口http封装
- javascript模块化编程库require.js的用法
- Oracle查询优化改写--------------------报表和数据仓库运算
- 勤拂拭软件Android开发之旅(1) 之 Android 开发环境搭建
- JavaScript代码压缩工具UglifyJS和Google Closure Compiler的基本用法
- Maven常用的几个命令
- C# 匿名类型如何使用
- Spring Security教程(二):通过数据库获得用户权限信息
热门文章
- Linux_Samba详解
- 笨办法学python 13题:pycharm 运行
- CSS——插入形式 基本格式 常见css代码
- Windows.命令行(CMD)_执行命令&;环境变量
- IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa
- ball小游戏
- 秒懂Vuejs、Angular、React原理和前端发展历史
- [LeetCode] 95. 不同的二叉搜索树 II
- CSS 属性小记
- bootstrap使用总结(carousel设置大小。item设置大小,img设置大小)