Javascript 如何解决';无法设置属性';myInterval';未定义的';错误?
因此,错误表示无法设置未定义的属性“myInterval”,我不知道为什么。此外,如果需要,我可以向您发送完整版本的代码Javascript 如何解决';无法设置属性';myInterval';未定义的';错误?,javascript,reactjs,react-native,Javascript,Reactjs,React Native,因此,错误表示无法设置未定义的属性“myInterval”,我不知道为什么。此外,如果需要,我可以向您发送完整版本的代码 const timerStart = () => { this.myInterval = setInterval(() => { setIsOn(true); if (secs > 0) { 将this.myInterval更改为const myInterval 要访问函数外部的myIn
const timerStart = () => {
this.myInterval = setInterval(() => {
setIsOn(true);
if (secs > 0) {
将
this.myInterval
更改为const myInterval
要访问函数外部的myInterval
变量,可以在组件顶部的构造函数中声明它,如下所示
class MyComponent extends Component{
constructor(props) {
super(props);
this.myInterval = null;
}
setInterval = () => {
this.myInterval = setInterval(() => {
console.log("Running interval");
}, 1000);
};
cancelInterval = () => clearInterval(this.myInterval);
render() {
return "..."
}
}
不要忘记,如果您想使用在类组件中定义的函数,您需要将其绑定到您的组件
如果您很容易使用功能组件,只需使用const并定义您的功能即可
// Class Component
hello(){
}
constructor(props){
super(props)
this.hello = this.hello.bind(this)
}
//Function Component
const hello =() =>{
}
您不必对timerStart
变量调用函数。它会自动为您启动计时器
当然,如果这是您想要做的:-)您正在尝试在箭头函数中使用这个关键字
解决方案:删除this关键字,并使其const
const timerStart = () => {
const myInterval = setInterval(() => {
... your code ...
}
}
问题是,根据您的评论:现在我不能在其他任何地方使用myInterval,只能在timerStart函数中使用。有没有办法解决这个问题?
解决方案:您可以为setInterval单独设置一个函数,然后可以在任何地方调用它
const myInterval = setInterval(() => {
... your code ...
if (somecodition) {
clearInterval(myInterval);
}
},1000)
现在,使用此myInterval任意位置,间隔为1000 ms,函数将运行(请参见clearInterval,其中包含您想要的任何条件)
只要您想运行,就调用该函数:myInterval()
这意味着this
是未定义的
,这是因为您正在使用,它不会更改this
绑定。您应该尝试传递一个匿名函数,以便此
具有自己的调用上下文。现在我不能在其他任何地方使用myInterval,只能在timerStart函数中使用。有没有办法解决这个问题?我用一个更合适的解决方案再次更新了我的答案。
const myInterval = setInterval(() => {
... your code ...
if (somecodition) {
clearInterval(myInterval);
}
},1000)