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. oracle 数据库插入中文乱码

    一. 查询数据库编码 select userenv('language') from dual; 查询服务器编码 select * from v$nls_parameters; 推出sql查询系统编码 ...

  2. vue部分问题

    [color=#00b050]学 vue 的看过来,vue-cli 挺好用的,但是遇到具体情况还得做一部分调整和配置默认你已经成功启动 vue-cli 1.使用 scsscnpm i node-sas ...

  3. ios添加-webkit-overflow-scrolling依然卡顿

    项目由vue-cli2创建 在overflow: auto区域内滑动ios手机出现卡顿,搜索资料后添加-webkit-overflow-scrolling: touch ios bug: 1.滑动区域 ...

  4. jQuery的ajaxFileUpload上传文件插件刷新一次才能再次调用触发change

    jQuery的ajaxFileUpload插件 关于用ajaxfileupload时,遇到一个要刷新一次页面才能再次上传,用live()方法来绑定 file表单 的change事件就能够解决,直接$( ...

  5. asp.net相关的一些代码

    显示目录下的内容 using System.IO; DirectoryInfo di = new DirectoryInfo(Server.MapPath("Views/video" ...

  6. ubuntu配置px4编译环境

    一.主要参考的内容 px4的开发者手册 https://dev.px4.io/zh/setup/dev_env_linux.html 其中有的shell指令 权限设置 警告:永远不要使用sudo来修复 ...

  7. 【Flutter学习】之动画实现原理浅析(一)

    一,动画介绍 动画对于App来说,非常的重要.很多App,正是因为有了动画,所以才会觉得炫酷.移动端的动画库有非常的多,例如iOS上的Pop.web端的animate.css.Android端的And ...

  8. tomcat7以下线程控制

    web server允许的最大线程连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右. 1.编辑tomcat安装目录下的conf目录下的server. ...

  9. Hadoop 家族技能图谱skill-map

    ----# Hadoop 家族技能图谱- Hadoop- Zookeeper- Avro- Chukwa- Ambari- Whirr- Bigtop- HCatalog- Hue- HBase- P ...

  10. 关于自动化测试学习 selenium

    selenium学习路线 配置你的测试环境,真对你所学习语言,来配置你相应的selenium 测试环境.selenium 好比定义的语义---“问好”,假如你使用的是中文,为了表术问好,你的写法是“你 ...