这是我的代码的一部分:
public static int[] mergeSort(int[] array)
{
if (array.length <= 1)
{
return array;
}
else
{
int[] linkeListe = Arrays.copyOfRange(array, 0, array.length/2);
int[] rechteListe = Arrays.copyOfRange(array, linkeListe.length, array.length);
mergeSort(linkeListe);
mergeSort(rechteListe);
return merge(linkeListe, rechteListe);
}
}
public static int[] merge(int[] linkeListe, int[] rechteListe)
{
int[] sortedArray = new int[linkeListe.length + rechteListe.length];
int addElementPosition = 0;
while (linkeListe.length > 0 && rechteListe.length > 0)
{
if (linkeListe[0] <= rechteListe[0])
{
sortedArray[addElementPosition] = linkeListe[0];
linkeListe = deleteFirstElement(linkeListe);
}
else
{
sortedArray[addElementPosition] = rechteListe[0];
rechteListe = deleteFirstElement(rechteListe);
}
addElementPosition++;
}
while (linkeListe.length > 0)
{
sortedArray[addElementPosition] = linkeListe[0];
addElementPosition++;
linkeListe = deleteFirstElement(linkeListe);
}
while (rechteListe.length > 0)
{
sortedArray[addElementPosition] = rechteListe[0];
addElementPosition++;
rechteListe = deleteFirstElement(rechteListe);
}
return sortedArray;
}
public static int[] deleteFirstElement(int[] array)
{
int[] newArray;
if (array.length > 1)
{
newArray = new int[array.length - 1];
newArray = Arrays.copyOfRange(array, 1, array.length);
}
else
{
newArray = new int[0];
}
return newArray;
}
它生成以下错误:
const prevState = this.state;
this.setState(prevState => ({
companies_checked: {
...prevState.companies_checked,
[target.value]: target.checked
}
}));
我正在使用内联/箭头功能中的变量。使错误消失的最佳方法是什么?
答案 0 :(得分:2)
我在inline / arrow函数中使用了变量。
不,你不知道。您在函数中使用的prevState
被声明为函数的参数。从外部作用域遮盖了const
声明的prevState
。
使错误消失的最佳方法是什么?
假设函数按原样运行,只需省略const
声明。
答案 1 :(得分:2)
尝试以下操作(即删除声明prevState
的行):
this.setState(prevState => ({
companies_checked: {
...prevState.companies_checked,
[target.value]: target.checked
}
}));
Eslint抱怨之后,您声明了常量prevState
,而从未使用过它。解决该问题的正确方法是根本不声明它。
在prevState
调用中的setState
是正确的-发送到回调函数的第一个参数setState
是先前的状态,这是您要在回调中使用的状态功能。
答案 2 :(得分:0)
我认为这只是命名冲突。
// you already declared prevState
const prevState = this.state;
// change to this.setState(previousState =>
this.setState(prevState => ({
companies_checked: {
...prevState.companies_checked,
[target.value]: target.checked
}
}));
您实际上没有使用您声明的prevState