React JS 未捕获的引用错误:函数未定义
2016-09-21
41539
我尝试在 ReactJs 组件中发生点击事件时调用 shuffleCards。但是,我收到以下错误:
Uncaught ReferenceError: shuffleCards is not defined
这是我的代码:
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);
}
}
3个回答
编辑 刚刚看到评论, zerkms 已经为您提供了解决方案。为了澄清起见,我将留下我的答案。
您的问题是,在
handleClickMethod
中,您调用的是
shuffleCards
而不是
this.shuffleCards
shuffleCards(array) {
// ...
}
handleClickEvent(event) {
// ...
if (this.state.count == 0) {
cards = this.shuffleCards(cards); // here you should use `this.`
}
}
原因是
shuffleCards
方法是在您的组件上定义的,可以通过
this
属性从其方法中访问。
如果您在
handleClickMethod
中定义了
shuffleCards
,那么您可以在不访问
this
的情况下调用它:
handleClickEvent(event) {
function shuffleCards(array) {
// ...
}
// ...
if (this.state.count == 0) {
cards = shuffleCards(cards); // here you don't need `this.`
}
}
nem035
2016-09-21
这对您有用吗?演示在这里: http://codepen.io/PiotrBerebecki/pen/qaRdgX
在
handleClickEvent
方法中引用
shuffleCards
时,您错过了
this
。
shuffleCards(array) {
// logic here
}
handleClickEvent(event) {
cards = this.shuffleCards(cards);
}
render() {
return (
<button onClick={this.handleClickEvent.bind(this)}>Click me</button>
);
}
Piotr Berebecki
2016-09-21
我遇到了同样的问题。
我升级了“ react-scripts ”并解决了此问题。
可能会修复此问题。
npm i react-scripts
Burak
2019-09-24