这两者有什么区别?道具和道具从setState()更新函数?

  • 本文关键字:setState 函数 更新 区别 reactjs
  • 更新时间 :
  • 英文 :


这两者有什么区别?

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}))

最新更新