繁体   English   中英

如何将 arrays 插入嵌套数组的 state 变量中? - 反应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM