这两者有什么区别?
this.setState((state) => ({counter: state.counter + this.props.step}))
和
this.setState((state, props) => ({counter: state.counter + props.step}))
我一直认为没有区别,因为setState()不更新道具,它只更新状态。也许我没有得到什么。
根据React文档
。道具和这个。状态可以异步更新,您不应该依赖于它们的值来计算下一个状态。
这是什么意思
让我们想象你的道具。step这里是1,同时你执行counter increment,另一个setState将step增加1,你仍然会得到1这样的
function Parent(){
const [step, setStep] = useState(1)
return <>
<button onClick={() => setStep(2)}>icrement step</button>
<Child step={step} />
</>
}
你仍然会得到1
this.setState((state) => ({counter: state.counter + this.props.step})) // props.step will remain 1
这就是为什么你应该在setState
中传递props的原因this.setState((state, props) => ({counter: state.counter + props.step}))