尝试使用react隐藏和显示列表但失败
handleChange = e => {
const { list } = this.state;
if (e.target.value !== "") {
this.setState({
list: list.map(o => ({
name: o.name,
hide: !o.name.indexOf(e.target.value) > -1
}))
})
} else {
this.setState({
list: list.map(o => ({
name: o.name,
hide: false
}))
});
}
};
有任何疑问是什么错? https://codesandbox.io/s/8ljkoz41k2
答案 0 :(得分:2)
让我解释一下你做错了什么
hide: !o.name.indexOf(e.target.value) > -1
在上面的代码中,将返回indexOf值(可能是某个数字),然后由于!
运算符返回 false 。
您正在尝试将 BOOL 值与整数 -1 进行比较,这显然会返回 false
用括号包裹你的病情,并按如下方式!
,
hide: !(o.name.indexOf(e.target.value) > -1)
或使用以下条件,
hide: o.name.indexOf(e.target.value) === -1
它会起作用。