Todolist.js

import React, { Component,Fragment } from 'react';
import TodoItem from './TodoItem';
import './style.css';
class Todolist extends Component {
constructor(props) { //最优先执行的函数
super(props);
this.state={
inputValue:'',
list:[]
}
this.handleinputChange=this.handleinputChange.bind(this);
this.handlebuttonClick=this.handlebuttonClick.bind(this);
this.handleItemdelt=this.handleItemdelt.bind(this);
}
render() {
return (
<Fragment>
<div>
{/*这是一个todolist*/}
<label htmlFor='insertArea'>输入内容</label>
<input
id="insertArea"
className='input'
value={this.state.inputValue}
onChange={this.handleinputChange}
/>
<button onClick={this.handlebuttonClick}> 提交 </button>
</div>
<ul>
{this.getTodoItem()}
</ul>
</Fragment>
);
}
getTodoItem(){
return this.state.list.map((item,index)=>{
return(
<TodoItem
key={index}
index={ index }
item={ item }
deleteItem={this.handleItemdelt}
/>
)
})
}
handleinputChange(e){
const value=e.target.value;
this.setState(()=>({
inputValue:value
}));
// this.setState({
// inputValue:e.target.value
// })
}
handlebuttonClick(e){
this.setState((prevState)=>{
return{
list:[...prevState.list,prevState.inputValue],
inputValue:''
}
});
// this.setState({
// list:[...this.state.list,this.state.inputValue],
// inputValue:''
// })
}
handleItemdelt(index){
// immutable
// state 不允许我们坐任何的改变
this.setState((prevState)=>{
const list=[...prevState.list];
list.splice(index,1);
return{list}
})
// const list=[...this.state.list]; // list的一个副本
// list.splice(index,1);
// this.setState({
// list:list
// })
}
}
export default Todolist;

TodoItem.js

import React ,{ Component } from 'react';
class TodoItem extends Component{
constructor(props){
super(props);
this.handleclick=this.handleclick.bind(this);
}
render(){
const { item }=this.props;
return (<li
onClick={this.handleclick}
dangerouslySetInnerHTML={{__html:item}}
></li>
)
}
handleclick(){
const {deleteItem,index}=this.props;
deleteItem(index);
}
}
export default TodoItem;

最新文章

  1. Openxml 笔记
  2. 下载安全程序需谨慎 黑客盯上XP用户
  3. 2016HUAS暑假集训题1 H - N皇后问题
  4. win7 用户目录
  5. VC++ 如何在显示对话框的时候,指定焦点控件!
  6. cookie学习
  7. 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
  8. sdut 2840 Best string Orz~ (dp)
  9. 多线程之RunLoop
  10. find 日常使用
  11. js接收后台时间数据变成秒处理为正常格式
  12. Java Object中的equals和hashCode
  13. spring boot -Properties &amp; configuration
  14. python之requests 乱七八糟
  15. mysql caching_sha2_password异常分析
  16. Cause: java.sql.SQLException: The user specified as a definer (&#39;root&#39;@&#39;%&#39;) does not exist
  17. C#易忘点
  18. 21.Decorator修饰器
  19. Jmeter_远程启动
  20. phpexcel图形图表(一)入门

热门文章

  1. Ubuntu16.04下同时安装Anaconda2与Anaconda3
  2. 部署和调优 3.3 dns安装配置-3
  3. python爬虫实战(1)--爬取糗事百科
  4. windows python-mysql 安装
  5. MyBatis总结四:配置文件xml详解
  6. Android广播接收者
  7. sklearn.svm.SVC参数说明
  8. easyUI datagrid 分页参数page和rows
  9. java全栈day01-03注释、关键字与标识符
  10. java全栈day12----final static 匿名对象 内部类 包的声明与访问