创建GatsbyJS / ReactJS页面时,我试图重复执行窗口函数。这是我的代码:
import React, { Component } from "react";
class Example extends Component {
componentDidMount() {
this.Foo();
}
Foo() {
console.log(typeof window);
if (typeof window !== "undefined") {
window.setTimeout(
(() => {
console.log("bar");
},
200)
)();
}
}
render(){
return {
<>
</>
}
}
}
export default Example;
我的问题是为什么我会继续收到TypeError: window.setTimeout(...) is not a function
。 window
已定义,但我无法使用其任何方法。该功能将来会修改状态,因此必须在呈现React组件之后的安装阶段运行。我在这里做什么错了?
答案 0 :(得分:1)
您基本上是在调用setTimeout(...)()
,这会引发错误,因为setTimeout(...)
不会返回函数。
window.setTimeout(
(() => {
console.log("bar");
},
200)
)();
^^
那里也有一对不必要的括号。您应该这样做:
window.setTimeout(() => { ... }, 200);