ToDoList

主要功能  

    增加数据

    删除数据

    修改数据

    查寻数据渲染页面

  1 . HTML页面

  

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Web site created using create-react-app" />
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>React App</title>
<style>
*{margin:0;padding:0;}
.btn{border:none;background:none;color:red;}
.btn-color{color:green;}
li{border-bottom:0.1px solid #000; list-style: none;}
li:nth-child(even){
background:pink;
}
li:nth-child(odd){
background:skyblue;
}
</style>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>

  

  

  2 . Index.js文件代码

import React from "react";
import ReactDOM from 'react-dom'; class TodoList extends React.Component{
//构造函数
constructor(){
//super()超级继承React
super();
//声明state状态名为myList的数组和myInput字符串
this.state={
myList:[],
myInput:""
}
}
//生命周期方法在渲染之前调用
UNSAFE_componentWillMount(){
// 获取本地数据赋值给myList
var myList = window.localStorage.getItem("myList");
//判断myList是否是空的
if(myList === null || myList === ""){
//如果myList什么都没有,就让它等一个空数组
myList=[]
}else{
//如果myList不是空的,拿到的数据是字符串需要通过split进行转换成数组
myList = myList.split(",")
}
//把转换过的数组赋值给this.setState名为myList
this.setState({
myList:myList
}) }
//添加的点击事件
handleAddClick(){
//拿到input的值
var val = this.refs.myInput.value;
//把input的值清空
this.refs.myInput.value=this.state.myInput;
//添加数据到this.state的myList
this.setState({
myList:[...this.state.myList,val]
},()=>{
//修改本地数据
window.localStorage.setItem("myList",this.state.myList)
})
}
//删除的点击事件
handleDeleteClick(index){
//获取this.state的myList数组,赋值给arr
var arr = this.state.myList;
//删除index下标的数据,后边的1是删除一条
arr.splice(index,1)
//删除过后重新赋值给this.state的myList
this.setState({
myList:arr
},()=>{
//修改本地数据
window.localStorage.setItem("myList",this.state.myList)
})
}
//修改的点击事件
handleUpdateClick(index){
//获取this.state的myList数组,赋值给arr
var arr = this.state.myList;
//同过prompt获取要修改的内容
var str = prompt("请输入修改内容");
//判断是不是确认修改
if(str!=null){
//在arr数组中找到下标index,设置修改个数为1,修改的内容为str
arr.splice(index,1,str);
//修改过后把this.state的myList数据修改成给改过的数据
this.setState({
myList:arr
},()=>{
//修改本地数据
window.localStorage.setItem("myList",this.state.myList)
})
}
}
//绑定键盘事件
keyDown(e){
//判断键盘按下的数字码是不是enter
if(e.keyCode === 13){
//如果是enter的编码,执行添加的点击事件
this.handleAddClick();
}
}
//清空的点击事件
handleClearClick(){
//直接把this.state的myList赋值成为空数组
this.setState({
myList:[]
},()=>{
//修改本地数据
window.localStorage.setItem("myList",this.state.myList)
})
} // 渲染
render(){
return(
<React.Fragment>
{/* input是搜索框 button第一个是添加 button第二个是清空 */}
<input ref="myInput" onKeyDown={this.keyDown.bind(this)} type="text"/><button onClick={this.handleAddClick.bind(this)}>添加</button><button onClick={this.handleClearClick.bind(this)}>清空</button>
<ul>
{/* 通过map循环遍历this.state的myList 渲染页面 给第一个button绑定删除事件 给第二个button修改事件 */}
{this.state.myList.map((m,index) => {return <li key={index}>{m} <button onClick={this.handleDeleteClick.bind(this,index)}>删除</button><button onClick={this.handleUpdateClick.bind(this,index)}>修改</button></li>})}
</ul>
</React.Fragment>
);
}
}
//渲染页面
ReactDOM.render(<TodoList></TodoList>,document.querySelector("#root"))

  

ToDoList 增删改查的更多相关文章

  1. python 10min系列之实现增删改查系统

    woniu-cmdb 奇技淫巧--写配置文件生成增删改查系统 视频教程 项目主页跪求github给个star, 线上demo,此页面都是一个配置文件自动生成的 详细的文章介绍和实现原理分析会发布在我的 ...

  2. 一起学Vue:CRUD(增删改查)

    目标 使用Vue构建一个非常简单CRUD应用程序,以便您更好地了解它的工作方式. 效果页面 比如我们要实现这样列表.新增.编辑三个页面: 列表页面 新增页面 编辑页面 我们把这些用户信息保存到Todo ...

  3. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  4. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查

    系列目录 文章于2016-12-17日重写 在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下. 这讲主要是,制作漂亮的工具栏,虽 ...

  6. 通过Java代码实现对数据库的数据进行操作:增删改查

    在写代码之前,依然是引用mysql数据库的jar包文件:右键项目-构建路径-设置构建路径-库-添加外部JAR 在数据库中我们已经建立好一个表xs :分别有xuehao  xingming    xue ...

  7. Hibernate全套增删改查+分页

    1.创建一个web工程 2.导入jar包 3.创建Student表 4.创建实体类 package com.entity; public class Student { private Integer ...

  8. 使用 Json.Net 对Json文本进行 增删改查

    JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...

  9. yii2 增删改查

    自己总结的yii2 advanced 版本的简单的增删改查,希望对大家有所帮助 1.gii生成的actionCreate()方法中 获取插入语句的id $id = $model->attribu ...

随机推荐

  1. HTML5 回到顶部

    图片: html <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...

  2. Python3.5-20190504-廖老师的2-if elif else continue break

    条件判断: if 条件1: 代码块 elif 条件2: 代码块 else 条件3: 代码块 brith = input("请输入出身年月:") if  brith > 200 ...

  3. 关于Python的post请求报504错误

    这是个奇葩的问题,我也是奇葩的研究了好几天,最后发现,哈,原来是这个原因,在此记录下曲折的心路历程 接口Content-Type没有,body用的是postman中的raw数据,格式是text 程序如 ...

  4. 部署多个tomcat

    当需要部署多个tomcat的时,为了避免启动tomcat时出现冲突, 修改tomcat中的某些参数,编辑bin/startup.bat,避免启动路径错误,默认会启动CATALINA_HOME所指向的t ...

  5. node快速起web服务器

    首选,安装http-server模块 npm install http-server -g 在需要打开的静态页面的目录下,开启服务即可 http-server

  6. java开源项目

    原文地址:http://blog.longjiazuo.com/archives/2625 1.整理出一些使用比较广或者个人觉得比较好的java开源项目和资料供参考.2.如果你觉得好但是我没有列出的开 ...

  7. 小程序推送消息(Template)

    最近搞小程序模拟推送消息,才发现小程序推送消息接口准备下线. 请注意,小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能 咱们现在有需求,所以不管下不下,完成再说. 一:”获取a ...

  8. tomcat部署项目遇到的问题

    场景:在一台服务器上部署多个Tomcat,每个Tomcat下运行各自的项目 * )启动Tomcat startup.cmd报错: java.lang.Exception: Socket bind fa ...

  9. [转]DrawPrimitive 详解Direct3DDevice8

    Direct3DDevice8 函数 05-39  DrawPrimitive 详解 费了好大的劲,终于搞清楚 DirectX 3D 三维图像中 DrawPrimitive 的用法(自嘲:未必). D ...

  10. toString()方法,与call()方法结合;用来进行数据类型检测

    ​ //toString()方法,与call()方法结合;用来进行数据类型检测 console.log(Object.prototype.toString.call([]));//'[object A ...