如何在GatsbyJS / ReactJS中重复执行窗口函数?

时间:2019-03-02 00:35:41

标签: javascript reactjs function typeerror gatsby

创建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 functionwindow已定义,但我无法使用其任何方法。该功能将来会修改状态,因此必须在呈现React组件之后的安装阶段运行。我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

您基本上是在调用setTimeout(...)(),这会引发错误,因为setTimeout(...)不会返回函数。

  window.setTimeout(
    (() => {
      console.log("bar");
    },
    200)
  )(); 
   ^^    

那里也有一对不必要的括号。您应该这样做:

window.setTimeout(() => { ... }, 200);