我已经通过使用redux-thunk获得了用户列表,然后我将它们映射到StateProProps这些用户以使其进入我的道具。但是之后,当我尝试在props.users.users上进行映射时,它会更改我的状态(即即使我在该状态上使用了散布运算符,props.users.users也会更改)。请帮忙。
const [users, setUsers] = useState([]);
useEffect(() => {
props.getUsers();
}, []);
useEffect(() => {
let tempUsers = [...props.users.users];
tempUsers = tempUsers.map(user => {
user.created = new Date(parseInt(user.created) * 1000).toString()
user.action = { ...user };
return user;
});
setUsers(tempUsers);
}, [props.users.users]);
答案 0 :(得分:0)
您仍在map
中对用户对象进行突变。您正在直接设置user
对象的属性,这些属性仍引用原始用户对象。您还应该创建user
对象的新副本以设置其属性。
tempUsers = tempUsers.map(usr => {
let user = { ...usr };
user.created = new Date(parseInt(user.created) * 1000).toString()
user.action = { ...user };
return user;
});