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;