【发布时间】:2020-11-03 20:41:51
【问题描述】:
正如你所见,我对 React.js 还很陌生。在这里,我正在尝试创建一个待办事项列表应用程序。它的顶部应该有三个按钮——一个用于显示已完成的任务,第二个用于未完成的任务,最后一个用于显示列表中的所有任务。所以,我需要两个列表——一个用于添加到列表中的每个项目,另一个用于过滤我猜。问题是在这种情况下我无法掌握状态,我的过滤器数组是空的。我不想直接改变状态,但尝试了很多事情,我不得不做错事。这是第一个按钮的代码。
我想点击按钮,重新渲染网站并获得过滤项目列表。
//todos, setTodos are for my primary state
const TodoFilter = ({ todos, setTodos}) => {
const [filter, setFilter] = useState([])
const handleActive = () => {
const allTodos = [...todos]
const completedFilter = allTodos.filter(item => item.isComplete === true)
setFilter(completedFilter)
}
【问题讨论】:
-
const handleActive = () =>不是有效的 JS -
是的,不知道为什么,但是代码的一部分被删掉了。
-
从代码/语法的角度来看,它看起来不错。 (对于您的 handleActive 函数,除了缺少的右括号之外)。你可能会更好地放置更多代码,或者一个可运行的 sn-p / jsfiddle
-
另外,你不需要传播
todos来创建allTodos,因为Array.prototype.filter()无论如何都会返回一个新数组
标签: arrays reactjs react-hooks state use-state