Javascript 如何将变量设置为空数组
我试图编写一个函数,从名为Javascript 如何将变量设置为空数组,javascript,arrays,reactjs,typescript,jsx,Javascript,Arrays,Reactjs,Typescript,Jsx,我试图编写一个函数,从名为selectedItems的数组中删除所有元素 看起来是这样的: const selectNone = (e: any) => { let selectedItemsCopy = selectedItems; selectedItemsCopy = [] setState( { ...state, areAllSelected: false, isChecked: fals
selectedItems
的数组中删除所有元素
看起来是这样的:
const selectNone = (e: any) => {
let selectedItemsCopy = selectedItems;
selectedItemsCopy = []
setState(
{
...state,
areAllSelected: false,
isChecked: false,
selectedItems: selectedItemsCopy
}
);
}
但在setState中,selectedItems不会更新为数组的空副本。我做错了什么?你的问题是,你实际上是在变异状态,这在React中基本上是被禁止的。在这种情况下,求解非常简单,只需将
[]
直接放在设置状态
中,不带任何变量:
const selectNone = (e: any) => {
setState(
{
...state,
areAllSelected: false,
isChecked: false,
selectedItems: []
}
);
}
用于创建数组副本的方法实际上并不复制数组,而是创建对原始数组的引用(JS就是这样工作的)。为了制作正确的副本(例如,为了能够进行修改,而不仅仅是清除数组),应该使用array.from()
这里有一个例子
const selectNone = (e: any) => {
let selectedItemsCopy = Array.from(selectedItems);
selectedItemsCopy[x] = changedValue;
setState(
{
...state,
areAllSelected: false,
isChecked: false,
selectedItems: selectedItemsCopy
}
);
}
你的问题是,你实际上是在变异状态,这在React中基本上是禁止的。在这种情况下,求解非常简单,只需将
[]
直接放在设置状态
中,不带任何变量:
const selectNone = (e: any) => {
setState(
{
...state,
areAllSelected: false,
isChecked: false,
selectedItems: []
}
);
}
用于创建数组副本的方法实际上并不复制数组,而是创建对原始数组的引用(JS就是这样工作的)。为了制作正确的副本(例如,为了能够进行修改,而不仅仅是清除数组),应该使用array.from()
这里有一个例子
const selectNone = (e: any) => {
let selectedItemsCopy = Array.from(selectedItems);
selectedItemsCopy[x] = changedValue;
setState(
{
...state,
areAllSelected: false,
isChecked: false,
selectedItems: selectedItemsCopy
}
);
}
[]
是我最初拥有的,但它也不起作用@helloWorld那么你的组件中肯定有其他地方出错了,你能提供更多的组件吗?[]
是我最初使用的,但也不起作用@helloWorld那么您的组件中的其他地方一定有错误,您能提供更多的组件吗?