简体   繁体   English

React JS 未捕获的引用错误:函数未定义

[英]React JS Uncaught Reference Error: function not defined

I am trying to call shuffleCards when the upon a click event in a ReactJs component.我试图在 ReactJs 组件中的点击事件时调用 shuffleCards。 However, I am receiving the following error:但是,我收到以下错误:

Uncaught ReferenceError: shuffleCards is not defined

Here's my code:这是我的代码:

constructor(props) {
    super(props);

    this.state = {
        count: 0
    };
}

shuffleCards(array) {
    var i = array.length,
        j = 0,
        temp;

    while (i--) {
        j = Math.floor(Math.random() * (i+1));

        temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}

handleClickEvent(event) {
    var cards = [
        {txt: "A",
        isDisplayed: false},
        {txt: "B",
        isDisplayed: false},
        {txt: "C",
        isDisplayed: false}
    ];
    if (this.state.count == 0) {
        cards = shuffleCards(cards);
    }

}

EDIT Just saw the comments and that zerkms already provided you with the solution. 编辑刚刚看到评论,并且zerkms已经为您提供了解决方案。 I'll leave my answer for clarification purposes. 我会留下我的答案以澄清澄清。


Your problem is that inside the handleClickMethod , you are calling shuffleCards instead of this.shuffleCards 你的问题是在handleClickMethod ,你正在调用shuffleCards而不是this.shuffleCards

 shuffleCards(array) { // ... } handleClickEvent(event) { // ... if (this.state.count == 0) { cards = this.shuffleCards(cards); // here you should use `this.` } } 

The reason is because shuffleCards method is defined on your component, which is accessible from its methods via the this property. 原因是因为shuffleCards方法是在您的组件上定义的,可以通过this属性从其方法访问它。

If you defined shuffleCards within the handleClickMethod , then you could call it without accessing this : 如果定义shuffleCards的内handleClickMethod ,那么你可以把它无需访问this

 handleClickEvent(event) { function shuffleCards(array) { // ... } // ... if (this.state.count == 0) { cards = shuffleCards(cards); // here you don't need `this.` } } 

Would this work for you? 这对你有用吗? Demo here: http://codepen.io/PiotrBerebecki/pen/qaRdgX 在这里演示: http//codepen.io/PiotrBerebecki/pen/qaRdgX

You missed this when referring to shuffleCards in the handleClickEvent method. 你在handleClickEvent方法中引用shuffleCards时错过了this

shuffleCards(array) {
  // logic here
}

handleClickEvent(event) {
  cards = this.shuffleCards(cards);
}

render() {
  return (
    <button onClick={this.handleClickEvent.bind(this)}>Click me</button>
  );
}

I had the same problem.我有同样的问题。

And i upgrade " react-scripts " and fix this problem.我升级了“ react-scripts ”并解决了这个问题。

Probaply fix this.大概解决这个问题。

npm i react-scripts

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM