javascript - React 的 setState 方法带有 prevState 参数

标签 javascript reactjs

我是 React 新手,只是对 setState 方法有疑问。假设我们有一个组件:

class MyApp extends React.Component {

  state = {
    count: 3
  };

  Increment = () => {
    this.setState((prevState) => ({
      options: prevState.count + 1)
    }));
  }
}

那么为什么我们必须在 setState 方法中使用 prevState 呢?为什么我们不能这样做:

this.setState(() => ({
  options: this.state.count + 1)
}));

最佳答案

这两个签名都可以使用,唯一的区别是,如果您需要根据之前的状态更改状态,您应该使用 this.setState(function) ,它将为您提供快照(prevState) 从之前的状态。但如果更改不依赖于任何其他先前的值,则建议使用较短的版本 this.setState({prop: newValue})

this.setState(prevState =>{
   return{
        ...prevState,
        counter : prevState.counter + 1
   }
})

this.setState({counter : 2})

关于javascript - React 的 setState 方法带有 prevState 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55495198/

相关文章:

javascript - jQuery 文档的 Vanilla JS 版本点击链接?

javascript - componentWillReceiveProps 在 React 中渲染了两次

javascript - 具有多个元素的 CSS 图像不透明度淡入淡出过渡(类)

reactjs - 如何在 ReactJS 中添加 "colSpan"属性

javascript - 在 React 中编辑多个输入字段

reactjs - 测试是否调用了 const 模态组件

javascript - 在 React/Javascript 中查找 Map 的第一个迭代

javascript - 如果溢出则更改元素高度

javascript - 为什么服务器在发布身份验证信息时说需要 "name"?

javascript - 如何在悬停时转换图像?