Как выполнить оконную функцию повторно в GatsbyJS / ReactJS? - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь повторно выполнить оконную функцию при создании страницы 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 определено, но я не могу использовать ни один из его методов.Функция собирается изменить состояние в будущем, поэтому должна работать во время фазы монтажа после рендеринга реагирующего компонента.Что я тут не так делаю?

1 Ответ

0 голосов
/ 02 марта 2019

Вы в основном вызываете setTimeout(...)(), что выдает ошибку, потому что setTimeout(...) не возвращает функцию.

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

Там также есть ненужная пара скобок.Вы должны сделать это:

window.setTimeout(() => { ... }, 200);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...