我正在练习反应和获取 api,我想发送一些数据,但它不起作用......法典:
fetch('http://localhost:3003/users', {
method: 'POST',
body: JSON.stringify({ name, password }),
headers: {
'Content-Type': 'application/json'
}
})
.then(res => {
if (res.ok) {
return res.json();
}
throw new Error('Error');
})
.then(user => {
setUser([...users, user]);
console.log(user.id);
setLoggedUserID(user.id);
})
.then(setLoggedUserID(13)) // Check added user's ID
.then(errorUserChange(false)); // Change state and go to /loggedin page
在第二秒,我收到带有名称,密码和ID的用户。当我控制台.log它时,我可以看到正确的 id,但是当我尝试使用 setLoggedUserID 函数将其发送到状态时,我收到 null。这个函数在下一个(第三个(中工作正常,但在那边我无法访问数据(上面我已经硬编码了 13(。整个提取是在表单提交后调用的函数。
有什么想法吗?谢谢!
const res = await fetch('http://localhost:3003/users', {
method: 'POST',
body: JSON.stringify({ name, password }),
headers: {
'Content-Type': 'application/json'
}
});
const user = await res.json();
setUser(prev => [...prev, user]);
setLoggedUserID(user.id); // [loggedUserId, setLoggedUserID] = useState(null)
//
useEffect(() => {
if (loggedUserId) errorUserChange(false);
}, [loggedUserId]);
你需要向then()
传递一个函数。
您正在尝试调用setLoggedUserID(13)
并将其返回值作为回调函数传递。