import React, { Component, Fragment } from "react";
import './style.css'
import TodoItem from "./TodoItem";
class TodoList extends Component {
// 构造方法,固定接收props
constructor(props) {
// 调用父类的构造函数
super(props);
this.state = {
inputValue: '',
list: []
}
}
render() {
return (
<Fragment>
<div>
<label htmlFor="insertArea">输入内容</label>
<input
id="insertArea"
className="input"
value={this.state.inputValue}
// 改变handleInputChange的this指向
onChange={this.handleInputChange.bind(this)}
/>
<button onClick={this.handleBtnClick.bind(this)}>提交</button>
</div>
<ul>
{
// 渲染数据
this.state.list.map((item, index) => {
return (
<TodoItem
// 父组件向子组件传值、方法,子组件可以通过props调用
itemVal={item}
index={index}
del={this.handleItemDelete.bind(this)}
/>
)
})
}
</ul>
</Fragment>
)
}
handleInputChange(e) {
this.setState({
inputValue: e.target.value
});
}
handleBtnClick() {
this.setState({
// es6 追加
list: [...this.state.list, this.state.inputValue],
// 提交后清空当前input
inputValue: ''
});
}
handleItemDelete(index) {
// immutable
// state 不允许做出任何改变
// 展开运算符 把this.state.list做了一份copy
const list = [...this.state.list];
list.splice(index, 1);
this.setState({
list: list
});
}
}
export default TodoList