![](/img/trans.png)
[英]In React, if a state is an empty array then how do you render a text conditionally?
[英]How do you insert arrays into a state variable of a nested array? - React
我有一个这样的 state 变量:
const [todos, setTodos] = useState([])
我想将很多 arrays 放入其中(我不知道数量)。 这是我写的代码:
data.forEach(x => {
const userId = x.userId;
const to_to_user = data.filter(d=>d.userId===userId)
setTodos({...todos, [userId]:to_to_user});
});
问题是每一轮循环都会超出前一个索引,并且在数组的末尾只有最后一个索引。 有没有人有办法解决吗?
从技术上讲,您可以这样做:
data.forEach(x => {
const userId = x.userId;
const to_to_user = data.filter(d=>d.userId===userId)
setTodos((oldTodos) => {...oldTodos, [userId]:to_to_user}));
});
以便您始终拥有最新版本的todos
。
但是,与其多次调用setTodos
,不如先创建 object,然后再调用一次setTodos
。
const newTodos = data.reduce((obj, x) => {
const userId = x.userId;
const to_to_user = data.filter(d=>d.userId===userId);
obj[userId] = to_to_user;
}, {});
setTodos((oldTodos) => {...oldTodos, ...newTodos});
无论哪种方式,原始行应该是
const [todos, setTodos] = useState({});
因为您存储的是 arrays 的 object,而不是对象数组或 arrays 的数组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.