Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React.JS组件类中未定义函数错误_Javascript_Reactjs - Fatal编程技术网

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

Javascript React.JS组件类中未定义函数错误,javascript,reactjs,Javascript,Reactjs,我已经编写了一个带有构造函数、方法和呈现的react组件。当我注释掉方法并且只有呈现和构造函数时,一切都很好,但是当我添加方法时,第一个总是显示为未定义,除非我在构造函数之后关闭整个类 这是我的类(因为方法中的内容无关紧要,我只是为了简洁而声明): 导出默认类应用程序扩展组件{ 建造师(道具){ 超级(道具); const allWords=[“单词”、“烟斗”、“亲爱的”、“鹿”、“鱼”、“大衣”]; const word=allWords[Math.floor(Math.random()*a

我已经编写了一个带有构造函数、方法和呈现的react组件。当我注释掉方法并且只有呈现和构造函数时,一切都很好,但是当我添加方法时,第一个总是显示为未定义,除非我在构造函数之后关闭整个类

这是我的类(因为方法中的内容无关紧要,我只是为了简洁而声明):

导出默认类应用程序扩展组件{
建造师(道具){
超级(道具);
const allWords=[“单词”、“烟斗”、“亲爱的”、“鹿”、“鱼”、“大衣”];
const word=allWords[Math.floor(Math.random()*allWords.length)];
var lettersFound=[];
对于(var i=0;i{
}
fillWord=()=>{
}
handleGuess=(字母)=>{
}
渲染(){
返回(
);
}
}

这不会编译,导致错误“'IsleterInWord'未定义”。如果删除此函数,则会在fillWord上引发错误。如果添加“}”构造函数之后,所有方法都已定义,但render在返回行上抛出了意外的标记错误。我不明白为什么我要在构造函数之后关闭类,或者为什么它没有按原样编译。

这里是定义类属性,它当前(我想)是是stage-3 proposal。换句话说,默认情况下不支持它。可能正因为如此,您会遇到错误。如果您愿意,您可以使用Babel的类属性转换插件来添加对该语法的支持

isLetterInWord = (letter) => {
  }

  fillWord = () => {

  }
尝试将方法定义为,看看是否有效

isLetterInWord(letter) {

}

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

this.isLetterInWord = this.isLetterInWord.bind(this);
this.fillWord = this.fillWord.bind(this)
this.handleGuess = this.handleGuess.bind(this);

如何调用
IsleterInWord
方法?在这个沙盒中运行代码:。它似乎没有给出任何错误。可能这个插件在他的babel中丢失了config@OlivierBoissé我在另一个方法中调用该方法,就像isLetterInWord(字母);该插件似乎没有帮助其他功能工作正常。现在我遇到了这个问题。@ChristophenGo它工作正常,直到我在浏览器中添加IsleterInWord。这很奇怪。它看起来可以正常工作,因为升华文本现在可以正确地突出显示所有内容,但它仍然在chrome和firefox中抛出相同的错误。我删除了“this”在我的函数调用之前。一旦我添加了它和绑定,它就工作了。谢谢!
this.isLetterInWord = this.isLetterInWord.bind(this);
this.fillWord = this.fillWord.bind(this)
this.handleGuess = this.handleGuess.bind(this);