react 做的简易todolist
首先要有一定的react的基础,里面的一些不做解释(包括项目文件的用法及作用)
### 1. 先安装react的插件
npm install create-react-app -g 只需要安装一次即可
### 2. 下载react的脚手架
create-react-app 项目名(todo)
### 3.进入todo 启动项目或者运行的时候
可以 npm start 或者下载 npm install yarn --save------------>yarn start 也可以启动
### 4. 创建一个App 文件夹 把App.js 和App.css都放到里面
### 5. 在index.js 中 引入App.js 的路径修改一下
import App from './App/App';
### 6. 创建一个文件夹(to) 里面在新建一个to.js 文件 快捷键rcc con
### 7. 在App.ja 中引入
import To from "../todo/to";
<To></To>
### 8 . 在to.js 中编写
import React, {Component} from 'react';
class To extends Component {
constructor(props){
super(props);
this.state={//初始化状态
title:"",//通过他来获取用户的数据,并传递给list
list:[]//创建一个空数组,储存数据,添加
show:false
};
this.ch=this.ch.bind(this);//实现修改this的指向
this.add=this.add.bind(this);//实现修改this的指向
}
ch(e){//获取输入框内,用户输入的内容
this.setState({title:e.target.value});
}
add(){//点击添加按钮,添加数据
// alert(this.state.title);
var list=this.state.list;
var a=this.state.title;
var t={
tt:a,
done:false,
ss:true
}
list.push(t);
this.setState({list,title:""})//更新后的状态
}
del(n){//点击删除按钮,删除数据
var list1=this.state.list;
list1.splice(n,1);
this.setState({list:list1})
}
ck(n){//点击多选框,实现完成与未完成的切换效果
var list2=this.state.list;
list2[n].done=!list2[n].done;
this.setState({list:list2})
}
sl(n){//实现数量,每添加一条数据或者完成一项,会显示不同的数据
var list3=this.state.list;
var s=0;
list3.forEach((v,i,a)=>{
if(v.done){
s++
}
});
return s;
}
da(){//实现点击全选与全不选之间的来回切换效果 有点问题*****
var list4=this.state.list; //arr
let show =!this.state.show //true
list4.forEach((v)=>{
v.done=show
})
this.setState({list:list4,show})
var list=this.state.list;
list.map((v,i)=>{
var s = v.done;
s=!s
v.done = s;
this.setState({s:!s})
// v.done=!v.done
// this.setState({list})
})
}
dd(n){
var list=this.state.list;
list[n].ss=!list[n].ss;
this.setState({list});
}
ds(n){
var list=this.state.list;
list[n].ss=!list[n].ss;
this.setState({list});
}
cc(n,event){//事件的参数都放到最后
var list=this.state.list;
list[n].tt=event.target.value;
this.setState({list});
}
render() {
return (
<div>
<input type="text" value={this.state.title} onChange={this.ch}/>
<button onClick={this.add}>添加</button>
<h3>未完成{this.state.list.length-this.sl()}</h3>
<ul>
{
this.state.list.map((v,i,a)=>{
if(!v.done){
return <li key={i}>
<input type="checkbox" onClick={this.ck.bind(this,i)} defaultChecked={v.done}/>
<span style={{display:v.ss?"inline-block":"none"}} onClick={this.dd.bind(this,i)} >{v.tt}</span>
<input type="text" style={{display:!v.ss?"inline-block":"none"}} onBlur={this.ds.bind(this,i)} value={v.tt} onChange={this.cc.bind(this,i)}/>
<input type="button" value="删除" onClick={this.del.bind(this,i)}/>
</li>
}
})
}
</ul>
<h3>已完成{this.sl()}</h3>
<ol>
{
this.state.list.map((v,i,a)=>{
if(v.done){
return <li key={i}>
<input type="checkbox" onClick={this.ck.bind(this,i)} defaultChecked={v.done}/>
{v.tt}
<input type="button" value="删除" onClick={this.del.bind(this,i)}/>
</li>
}
})
}
</ol>
<input type="button" value="全选/全不选" onClick={this.da.bind(this)}/>
</div>
);
}
}
export default To;
react 做的简易todolist的更多相关文章
- 4-13 Webpacker-React.js; 用React做一个下拉表格的功能: <详解>
Rails5.1增加了Webpacker: Webpacker essentially is the decisions made by the Rails team and bundled up i ...
- React入门——制作一个TodoList App
源码 import React, { Component, Fragment } from "react"; class TodoList extends Component { ...
- 18 react react-redux 的编写 TodoList
1. 安装 react-redux yarn add react-redux 2. react-redux 编写 TodoList 使所有子组件 都能使用 store #index.js import ...
- React实现一个简易版Swiper
背景 最近在公司内部进行一个引导配置系统的开发中,需要实现一个多图轮播的功能.到这时很多同学会说了,"那你直接用swiper不就好了吗?".但其实是,因为所有引导的展示都是作为np ...
- 使用react做的聊天对话列表
刚刚接触react 可能写的地方有错误或者不完善的地方欢迎大家给指正 下面开始正题 首先分析页面基于react的特性--把页面中所有显示内容看做模块加载 本页面可以看做一个大的模块,我们暂且命名为 ...
- 这几天做完简易酒店管理系统,对Sql Server执行计划的浅显了解。
我是一名大三的小学生,今天开始我的第一篇博客,最近随便做了一个简易的酒店管理系统,对sql执行计划有了初步的了解. 查看上面语句的预估执行计划,在工具栏中有这个按钮 聚集索引扫描被称为Index Sc ...
- .NETCore 快速开发做一个简易商城
介绍 上一篇介绍 <.NETCore 基于 dbfirst 体验快速开发项目>,讲得不太清楚有些多人没看懂.这次吸取教训,将一个简易商城做为案例,现实快速开发. 本案例用于演示或学习,不具 ...
- python之做一个简易的翻译器(一)
平时经常在网上翻译一些单词,突发奇想,可不可以直接调某些免费翻译网站的接口呢?然后做一个图形界面的翻译小工具?下面开始实践 1.先找一下有哪些免费翻译的接口 百度了一下关键字“免费翻译接口”,然后找到 ...
- react做股票、期货交易遇到的问题(不完全是react)及解决方法。
公司项目主要是做股票及期货行情展示及交易,h5相应的做了一些功能---可以看行情图及模拟交易,实盘交易存在一定的风险,老板希望做自己的产品,这样h5就尴尬了,不过没关系,项目里还是有一定技术含量的-- ...
随机推荐
- HDU-5446-UnknownTreasure(组合数,中国剩余定理)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=5446 题意: On the way to the next secret treasure hiding ...
- HDU 6000 - Wash
/* HDU 6000 - Wash [ 贪心 ] 题意: L 件衣服,N 个洗衣机,M 个烘干机,给出每个洗衣机洗一件衣服的时间和烘干机烘干一件衣服的时间,问需要的最少时间是多少 分析: 先求出L件 ...
- QT项目之创建.pri文件
做大项目的时候,有很多.h和.cpp文件,会很繁琐.就需要.pri文件夹,将大项目分解成一个个的子项目,方便理清思绪和后期维护. 废话不多说,直接上过程! 第一步:新建一个项目.如图,选择choose ...
- HTML与CSS网页开发基础
HTML标记语言 HTML文件的创建 整个编译器,或者记事本,文件扩展名改为.htm或者.html HTML文档结构 <html>标记:开头,所有HTML文件以<html>标记 ...
- Poj 2104 K-th Number(主席树&&整体二分)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Case Time Limit: 2000MS Description You are wor ...
- P2736 “破锣摇滚”乐队 Raucous Rockers
题目描述 你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1 <= N <= 20)首歌的版权.你打算从中精选一些歌曲,发行M(1 <= M <= 20)张CD.每一张C ...
- 第四组团队git现场编程实战
组员职责分工 组员 分工 林涛(组长) 分配任务.整理数据.写博客 童圣滔 UI界面制作 林红莲 UI界面制作 潘雨佳 测评出福州最受欢迎的商圈 于瀚翔 测评出福州最受欢迎的商圈 覃鸿浩 测评出福州人 ...
- MySQL表连接
有3种: JOIN 按照功能大致分为如下三类: CROSS JOIN (交叉连接) INNER JOIN (内连接或等值连接). OUTER JOIN (外连接) 交叉连接CROSS JOIN 交叉连 ...
- GCC编译流程及常用编辑命令
GCC 编译器在编译一个C语言程序时需要经过以下 4 步: 将C语言源程序预处理,生成.i文件. 预处理后的.i文件编译成为汇编语言,生成.s文件. 将汇编语言文件经过汇编,生成目标文件.o文件. 将 ...
- Java List 和 Array 转化
List to Array List 提供了toArray的接口,所以可以直接调用转为object型数组 List<String> list = new ArrayList<Stri ...