Javascript useEffect常量post请求
我正在尝试使用MongoDB数据库构建一个简单的待办事项列表web应用程序。我的功能似乎正常工作,但我的useEffect钩子不断向服务器发出无限量的post请求。我不明白为什么会发生这种情况 反应码Javascript useEffect常量post请求,javascript,node.js,reactjs,mongodb,Javascript,Node.js,Reactjs,Mongodb,我正在尝试使用MongoDB数据库构建一个简单的待办事项列表web应用程序。我的功能似乎正常工作,但我的useEffect钩子不断向服务器发出无限量的post请求。我不明白为什么会发生这种情况 反应码 useEffect(() => { const payload = { roomkey: roomKey } async function getToDos() { const respo
useEffect(() => {
const payload = {
roomkey: roomKey
}
async function getToDos() {
const response = await axios({
url: 'http://localhost:4000/api/choresdisplay',
method: 'post',
data: payload
})
setItems(response.data.items)
}
getToDos();
}, [roomKey, items]) // render whenever roomkey changes (page load) or when user
// adds/deletes item
console.log(items)
function addItem() {
/*setItems(prevItems => {
return [...prevItems, inputText];
});*/
const payload = {
item: inputText,
roomKey: roomKey
}
async function addTodo() {
const response = await axios({
url: 'http://localhost:4000/api/chores',
method: 'post',
data: payload
})
}
addTodo()
setInputText("");
}
服务器端
userRouter.post('/chores', function (req, res) {
const roomkey = req.body.roomKey;
const newItem = new tdlModel({
Item: req.body.item,
roomKey: roomkey
});
newItem.save()
})
userRouter.post('/choresdisplay', async function (req, res) {
const roomkey = req.body.roomkey;
console.log(roomkey)
tdlModel.find({ roomKey: roomkey }, await function (err, foundMates) {
console.log(foundMates)
if (err) {
res.send({
token: USER_LOGIN_FAIL
})
} else {
console.log(foundMates);
res.send({
token: USER_LOGIN_SUCCESS,
items: foundMates,
})
}
})
})
这是因为您告诉
useffect
在项更改时重新运行,但随后您在useffect
本身中更改了它。因此,您正在创建一个无限循环。如果没有依赖项,您的逻辑似乎很好,因此只需将其从列表中删除即可:
....
}, [roomKey])
当您在useEffect中更改一个状态(setItems)并监听同一状态(items)上的更改时,它会导致一个无限循环
您需要在调用周围添加条件或更改依赖项数组