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