【发布时间】:2020-05-19 07:33:36
【问题描述】:
我有两个使用过的状态数组,分别称为查询和消息。
const [queries, setQueries] = useState([]);
const [messages, setMessages] = useState([]);
我有它,所以当用户键入搜索查询时,它会将查询添加到屏幕上的查询列表中。当用户删除其中一个查询或添加新查询时,我的使用状态将读取列表中的最后一个查询并在 useEffect 中运行一个提取请求。
useEffect(() => {
if (queries.length > 0) {
const [x] = queries.slice(-1);
axios
.get(`FETCH REQUEST`)
.then((res) => {
setMessages(res.data.messages);
})
.catch((err) => {
console.log(err);
});
} else {
setMessages([]); // <-- this right here is my problem!
}
}, [queries]);
问题是一切正常,直到数组中没有项目。它将短暂返回一个空消息数组,然后以某种方式获取最后一个删除的项目。形成我可以得出的结论,这就是问题所在,但尽管试图以各种方式强制我的结果,但我不明白为什么或如何。感谢您提前提供任何帮助!
【问题讨论】:
-
setMsg、setMessage和setMessages应该代表同一个功能吗? -
是的,请原谅我的草率。我会快速编辑一下!
标签: reactjs react-hooks use-effect