这是我的代码,我正在尝试在setUsers中设置数组,数据正确地来自后端,但未成功设置钩子,请帮助我
const LoadAllUser = () => {
const [users, setUsers] = useState([]);
const loadUsers = () => {
loadalluser()
.then((data) => {
if (data.error) {
console.log(data.error);
// setusers(data.error);
} else {
setUsers(data);
}
})
.catch((eror) => console.log("error is here"));
};
useEffect(() => {
loadUsers();
}, []);
我的回报看起来像这样
return (
<div>
{users.length > 0 ? (
users.map((index, user) => {
return (
<div key="index">
<label>Name : {user.name}</label>
<label>Email : {user.email}</label>
<label>NUmber : {user.number}</label>
</div>
);
})
) : (
<h1> No users found </h1>
)}
)
</div>
);
这就是我获取所有用户的方式
export const loadalluser = (users) => {
return fetch(`${API}/loadalluser`, {
method: "GET",
body: JSON.stringify(users),
})
.then((response) => {
return response.json();
})
.catch((error) => {
return error;
});
};
答案 0 :(得分:0)
fetch
仅拒绝已取消的请求或网络错误,否则将返回已解决的Promise。
Checking that the fetch was successful
如果发生网络错误,则
fetch()
承诺将以TypeError
拒绝 在服务器端遇到或CORS配置错误,尽管这 通常表示权限问题或类似问题-404并不构成 例如网络错误。准确检查成功fetch()
将包括检查诺言是否已解决,然后 检查Response.ok
属性的值为true。
您应检查response.ok
以确保请求成功或失败。您还可以删除catch块,因为使用组件代码中的任何catch块都会捕获它们。
export const loadalluser = (users) => {
return fetch(`${API}/loadalluser`, {
method: "GET",
body: JSON.stringify(users),
})
.then((response) => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
});
};
此更改应通过 not 静默吞下失败的提取请求并使用错误的值更新状态来提供帮助。
此外,您是否需要将users
传递给loadalluser
作为GET请求的正文?