在setState完全改变状态后,让函数执行的最好方法是什么?


const [selectedTopic, setSelectedTopic] = React.useState('')
const [a, setA] = React.useState(articles)

const handleApply = () => {
setA(articles)
if (selectedTopic !== "") {
setA(a.filter((article) => {
return selectedTopic === article.frontmatter.topic
}))
}
}

我正在尝试更新A,但我不认为它在过滤器方法执行之前更新,因为setState是异步的。这种情况的最佳解决方案是什么?许多帖子告诉使用useEffect,但这在我的情况下不起作用,因为这会导致无限循环。如果需要我提供更多的细节,请告诉我。谢谢你。

您可以在articles数组上制作过滤器方法

const handleApply = () => {
if (selectedTopic !== "") {
setA(
articles.filter((article) => {
return selectedTopic === article.frontmatter.topic;
})
);
} else {
setA(articles);
}
}