reactjs - 如何在 Gatsby 中捕获 document.ready 或 window.load 事件

标签 reactjs dom addeventlistener gatsby

我对 Gatbsy 框架相对较新,我正在尝试找出一种方法来切换类DOMContentLoaded 或在 window.load 上,一旦用户可以看到屏幕就为它们设置动画。

这是我到目前为止所做的,但似乎不太合适:

componentDidMount = () => {
  if (typeof window === "undefined") return
  window.addEventListener("load", this.myEventHandler)
  // or
  if (typeof document === "undefined") return
  document.addEventListener("DOMContentLoaded", this.myEventHandler)
}

有更好的方法吗?

提前谢谢您。

最佳答案

我认为您应该在 gatsby-browser.js 中添加这些事件监听器:

// gatsby-browser.js
// ES6
export const onClientEntry = () => {
  window.onload = () => { /* do stuff */ }
}

// or commonjs
exports.onClientEntry = () => {
  window.onload = () => { /* do stuff */ }
}

您不必在那里检查window,因为该文件仅在客户端运行。这是full list of available hooks .

而且据我所知 document 没有 ready 事件,它是 jQuery 的事情。您可能对DOMContentLoaded event感兴趣,尽管它和 jQuery 的现成 IIRC 之间有一些细微的差别。

关于reactjs - 如何在 Gatsby 中捕获 document.ready 或 window.load 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55249966/

相关文章:

javascript - 在 Protractor 中监听浏览器事件

javascript - Mobx 可观察映射到 js 数组

reactjs - 使用透明框架使 react Electron 应用程序可拖动

reactjs - 哪个SectionHeader在react-native中是粘性的?

javascript - ReactJS:使用自己的 CSS 创建独立组件

javascript - 表单提交时重新加载页面,getElementById 返回 null,表单不起作用

reactjs - React Redux 将计算存储在reducer 或action-creator 中?

javascript - CSS 和 Javascript 垂直对齐问题

java - 一个不错的 Java XML DOM 实用程序

javascript - 用于提交事件的 addEventListener 尽早运行处理函数