reactjs - 在构造函数中定义状态更好还是使用属性初始值设定项更好?

标签 reactjs ecmascript-next

根据this babel 文档中,将 ES6+ 与 React 结合使用的正确方法是像这样初始化组件:

class Video extends React.Component {
  static defaultProps = {
    autoPlay: false,
    maxLoops: 10,
  }
  static propTypes = {
    autoPlay: React.PropTypes.bool.isRequired,
    maxLoops: React.PropTypes.number.isRequired,
    posterFrameSrc: React.PropTypes.string.isRequired,
    videoSrc: React.PropTypes.string.isRequired,
  }
  state = {
    loopsRemaining: this.props.maxLoops,
  }
}

但有一些官方示例,例如 Dan Abramov 自己的 React DnD模块,使用 ES6+,但仍然在构造函数中定义状态:

constructor(props) {
    super(props);
    this.moveCard = this.moveCard.bind(this);
    this.state = {
       // state stuff
    }
}

现在,Dan Abramov 作为 React 的重要贡献者,可能知道他可以在构造函数之外定义状态,但仍然选择在构造函数内执行此操作。

所以我只是想知道哪种方式更好,为什么?

最佳答案

我认为这是个人喜好问题。转译后的输出在语义上是相同的。

关于reactjs - 在构造函数中定义状态更好还是使用属性初始值设定项更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37788342/

相关文章:

reactjs - react 模式 shouldCloseOnOverlayClick 不起作用

javascript - 使用 react-router v4 将 Prop 传递给子组件

javascript - React - 在已分配功能的单击上显示加载程序

parameters - 带有 Babel 的参数装饰器(如在 Typescript 中)

javascript - 在 ES7 中 stub 类字段函数

reactjs - 如何使用钩子(Hook)显示和隐藏 react 组件

javascript - 如何在 enzyme Jest 测试中定义 Prop

javascript - 将数组解构为对象属性键

javascript - 如何将具有递归和交替的正则语法转换为正则表达式

javascript - Electron 和 Babel 6 异步/等待抛出意外 token