构造函数vs babel在不使用babel的情况下返回错误。

时间:2018-05-23 21:53:07

标签: reactjs

我正在学习反应,在课程中他们正在使用create-react-app,我正在尝试编码但不知何故我不认为babel正在为我工​​作所以我需要使用构造函数和即使我关注的课程不是。我已经设法跟进,直到我上这个使用静态的课程。

课程提供的代码是:

import React, { Component } from 'react'
import PropTypes from 'prop-types'   

class Xpto extends Component {
  static propTypes = { //some props }
}
render() {
  // some logic
}

我的代码是:

import React, { Component } from 'react'
import PropTypes from 'prop-types'

class Xpto extends Component {
  constructor() {
    super()
    static propTypes = { //some props }
  }
  render() {
    // some logic
  }
}

问题在于,当我使用它时,它会返回此错误:

Syntax error: static is a reserved word in strict mode (10:4)

如果我将它移到构造函数之外,但在类中,它表示propTypes未定义,如果我删除静态并使用this.propTypes它可以工作,但在控制台中返回错误说使用静态。

我不了解正在发生的事情或如何解决这种情况。问一个朋友,他已经和React做了一些工作,他告诉我他也不知道要让babel工作并使用课程方法,但我很固执,想知道发生了什么,所以我要联系你

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试在课堂外定义propTypes

class Xpto extends Component {
  constructor(props) {
    super(props);
  }

  render() {
    const { name = 'Dan Abramov' } = this.props;
    return <div>{name}</div>;
  }
}

// You can define propTypes and defaultProps here
Xpto.propTypes = {
  name: PropTypes.string
};

如果确实有效,请尝试删除constructor

如果它不起作用,请发布错误,我们将从那里开始。