Reactjs 反应助攻阵法无效,哪一个是最好的?
现在,在React中,我想更新一个数组。哪种选择最好 我有以下几点:Reactjs 反应助攻阵法无效,哪一个是最好的?,reactjs,react-hooks,Reactjs,React Hooks,现在,在React中,我想更新一个数组。哪种选择最好 我有以下几点: const [users, setUsers] = useState(['1','2','3']); 现在,我想过滤掉3,数组中只有1和2 users.filter(item => item.name !== 3) 哪个选项最好: const [users, setUsers] = useState(['1','2','3']); 选项1,将数组复制到新变量: const tempUsers = {... user
const [users, setUsers] = useState(['1','2','3']);
现在,我想过滤掉3,数组中只有1和2
users.filter(item => item.name !== 3)
哪个选项最好:
const [users, setUsers] = useState(['1','2','3']);
选项1,将数组复制到新变量:
const tempUsers = {... users.filter(item => item.name !== 3)}
setUsers(tempArray);
备选案文2:
setUsers(users.filter(item => item.name !== 3))
哪一个更好,为什么我们选择一个而不是另一个?选项2
setUsers(users.filter(item => item.name !== 3))
那就足够了
这是因为
Array.filter()
不会直接改变状态,因为它会创建一个新数组。因此,在将结果设置为状态之前,无需采取额外的步骤将结果传播到新数组中。正如Martin fowler在《重构》一书中所说,这是一个代码气味的问题
第二个选项更好,因为它更容易读取,并且不需要额外的temp变量array::filter返回一个新的数组引用,所以我自然会选择这个。此外,您的第一个选项将把新数组扩展到一个对象中,它可能仍然可以编译和工作,这只是一种非常奇怪的方式。