React.JS组件类中的函数未定义错误

时间:2019-05-04 20:15:54

标签: javascript reactjs

我写了一个带有构造函数,方法和渲染的react组件。当我注释掉这些方法,只保留渲染器和构造函数时,一切都很好,但是当我添加方法时,除非我在构造函数之后关闭整个类,否则第一个总是以未定义的形式出现。

这是我的课程(因为我只是简单地声明了方法,所以这无关紧要):

export default class App extends Component {

  constructor(props) {
    super(props);
    const allWords = ["word", "pipe", "dear", "deer", "fish", "coat"];
    const word= allWords[Math.floor(Math.random()*allWords.length)];
    var lettersFound = [];
    for (var i=0; i<word.length;i++) {
      lettersFound = [...lettersFound, [i, "_"]];
    }
    this.fillWord = this.fillWord.bind(this);

    this.state = {
      word: word,
      numWrongGuesses: 0,
      lettersGuessed: [],
      lettersFound: lettersFound,
      error: ""
    }
  }

  isLetterInWord = (letter) => {
  }

  fillWord = () => {
  }



  handleGuess = (letter) => {
  }

  render () {
    return (
      <div className="App">
      </div>
    );
  }

}

这不能编译,给出错误“'isLetterInWord'未定义”。如果我删除此功能,则会在fillWord上引发错误。如果在构造函数之后添加“}”,则所有方法均已定义,但render在返回行上引发意外的令牌错误。我不明白为什么我要在构造函数之后关闭该类,或者为什么它不按原样进行编译。

2 个答案:

答案 0 :(得分:2)

在这里,您正在定义类属性,目前(我认为)这是第3阶段的建议。换句话说,默认情况下不支持。可能是因为这个原因,您遇到了错误。您可以使用Babel的class-properties-transform插件来添加对此语法的支持,如果您愿意的话。

isLetterInWord = (letter) => {
  }

  fillWord = () => {

  }

尝试按定义方法,看看是否可行

isLetterInWord(letter) {

}

答案 1 :(得分:2)

尝试将函数绑定到构造函数中,如下所示:

App.js