我有一个关于这两个选项的渲染行为的问题:
export function saveOrCancelStepContentComponents(stepIndex, targetArray, newArray) {
// Option 1
let stepsData = this.state.stepsData.slice();
stepsData[stepIndex][targetArray] = newArray;
this.setState({stepsData: stepsData}, () => {
console.log("saveStepConditions[]:", this.state.stepsData[stepIndex][targetArray]);
});
// Option 2
this.setState((prevState) => ({
stepsData: prevState.stepsData.map((currentStep, i) => {
if (i === stepIndex) {
return {
...currentStep,
[targetArray]: newArray,
}
}
return currentStep
})
}), () => {
console.log("saveStepConditions[]:", this.state.stepsData[stepIndex][targetArray]);
});
}
取消和保存两种选项都可以,也就是说console.logs没问题。但是,只有选项2重新呈现页面。选择1将不会导致任何表型变化。 任何想法为什么会这样?谢谢!
答案 0 :(得分:2)
这一行 uninst:
ClearErrors
${getOPtions} $CMDLINE "--quiet" $0
${IfNot} ${Errors}
StrLen $2 "\Uninstall.exe /S"
${Else}
StrLen $2 "\Uninstall.exe"
${EndIf}
StrCpy $3 $0 -$2 # remove "\Uninstall.exe"
ExecWait '$0 _?=$3' ;Do not copy the uninstaller to a temp file`
会改变stepsData[stepIndex][targetArray] = newArray;
个对象而不是创建一个新对象。
应该是
stepsData[stepIndex]
与你在地图功能中的方式相同。