【发布时间】:2020-08-16 01:46:41
【问题描述】:
我正在尝试在 for 循环中更新 setState,但由于某种原因,状态没有被复制,它只是被替换。应该有 2 个客户,而不是我得到一个。谁能告诉我为什么会这样? console.log 正在返回两个客户端。
const handleViewClients = () => {
for (let i = 0; i < clients.length; i++) {
console.log(clients[i].clientid);
fetch("http://localhost:3005/all-clients/" + clients[i].clientid)
.then((response) => response.json())
.then((result) => {
console.log(result);
setBarbersClient({
...barbersClient,
client: result,
});
});
}
};
我也试过这个...console.log 正在返回我需要的内容
Promise.all(
clients.map((client) =>
fetch("http://localhost:3005/all-clients/" + client.clientid)
)
)
.then((resp) => resp.json())
.then((result) => {
console.log(result.username)
setBarbersClient({
...barbersClient,
client: result,
});
});
这是来自服务器端的路由
app.get("/all-clients/:clientid", (req, res) => {
db.NewClientsx.findOne({
where: {
id: req.params.clientid,
},
}).then((response) => {
res.json(response);
});
});
【问题讨论】:
-
2
client你所在的州? -
如果我 console.log result.username 这是客户端的键,它将两个客户端都返回到控制台。但是由于某种原因,在我设置为只有一个状态之后,@bertdida
-
您能否在问题中包含
/all-clients回复? -
是的,它现在就在那里@bertdida
-
我在
response上的意思是实际的json数据——当您console.log(result)时您将看到的数据,您可以包含这些数据吗?
标签: reactjs for-loop react-hooks setstate