我问自己是否有一种干净,正确的方法可以使用setState
交换数组中的两个对象。这就是我目前所做的事情:
export function moveStepUp(index) {
if(index > 0){
let currentStep = this.state.stepsData[index];
let stepAbove = this.state.stepsData[index - 1];
this.setState((prevState) => ({
stepsData: prevState.stepsData.map((step, i) => {
if(i === index - 1)
return {
...currentStep,
position: i
};
if(i === index)
return {
...stepAbove,
position: i
};
return step;
})
}), () => console.log(this.state.stepsData));
}
}
此代码正常运行,但我认为可能有更好的解决方案。这样一个简单的任务似乎有太多的代码行。谢谢!
答案 0 :(得分:3)
如果您知道元素索引,为什么不使用第三个变量简单地交换两个数组值。
首先将数组复制到另一个变量中,交换两个数组值,然后使用this.setState(prevState => {
let data = [...prevState.data];
let temp = data[index-1];
data[index-1] = data[index];
data[index] = temp;
return { data };
})
更新状态值。
像这样:
$groupid = Get-AzureADGroup | Where-Object {$_.DisplayName -like "Grp*"}
$useradd = Get-AzureADUser | select userprincipalname,objectid | where {$_.UserPrincipalName -like ‘*PS@*’}
$users = $useradd.objectId
foreach($user in $users){Add-AzureADGroupMember -ObjectId $groupid.ObjectId -RefObjectId $user}
您可以使用任何其他方式创建数组副本,而不是spread operator。
答案 1 :(得分:0)
在反应钩子中 您可以使用它,这对我有用
fallback to default value