如果在ul上绑定事件
import React, {Fragment, Component} from 'react';
// function todo() {
// var state = {
// inputVal: "hello xxx",
// list: []
// }
// return (
// <Fragment>
// <input value={state.inputVal}/>
// <ul>
// <li>苹果</li>
// <li>橘子</li>
// <li>西瓜</li>
// </ul>
// </Fragment>
// );
// }
class todo extends Component {
constructor(props) {
super(props);
this.state = {
inputVal: '',
list: ['111','222']
}
}
handleInputChange(e) {
// console.log(e);
// console.log(this);
this.setState({
inputVal: e.target.value
})
}
handleKeyUp(e) {
if(e.keyCode === 13) { //按了回车
const list = [...this.state.list, this.state.inputVal];
this.setState({
inputVal: '',
list: list
})
}
}
handleEvent(e) {
const li = e.target;
let list = [...this.state.list];
list = list.filter((value,index) => {
return value !== li.innerText;
});
this.setState({
list
});
}
render() {
return (
<Fragment>
<input
value={this.state.inputVal}
onChange={this.handleInputChange.bind(this)}
onKeyUp={this.handleKeyUp.bind(this)}
/>
<ul onClick={this.handleEvent.bind(this)}>
{
this.state.list.map((value, index) => {
return <li key={index}>{value}</li>
})
}
</ul>
</Fragment>
)
}
}
export default todo;如果像上面这样写,效果也实现了,但是通过比较innerText好像不太好,如果text很多的话。
所以是不是可以在li上绑定一个自定义属性,值是index?后面就通过比较自定义属性筛选。。。
应该怎么实现呢,react咋自定义属性然后取到呀?
还有我发现li上的key,直接li.key或者li.getAttribute() 都不行
9
收起
正在回答
2回答
你好,可以在li上绑定一个id值为索引,通过获取点击元素的id值进行删除,如下:

可以修改测试下,祝学习愉快!
欢迎采纳~
4.Vue与React高级框架开发
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星