javascript - 在 Gatsby 中添加预加载器
问题描述
我有一个Preloader
负责预加载器的组件,这意味着该组件将弹出 2 秒并为该页面打开一个窗口。
我希望每次我的路线更改时都会弹出这个,例如我访问/blog
页面,所以它必须首先呈现这个或在加载页面之前加载。
我所做的是我去了gatsby-browser.js
然后调用了以下内容:
export const onPreRouteUpdate = () => {
return <Preloader />
}
这个没用。我的代码由这些组成:
import React from 'react'
const Preloader = () => {
return (
<div id="loader-wrapper">
<div id="loader"></div>
<div className="loader-section section-left"></div>
<div className="loader-section section-right"></div>
</div>
)
}
export default Preloader
而这个简单的脚本:
/* preloader */
setTimeout(function(){
$('body').addClass('loaded');
$('h1').css('color','#222222');
}, 1000);
每次路线更改时如何加载?
解决方案
您应该只将其添加<Preloader />
到您的布局中,然后使用onPreRouteUpdate
它来隐藏它。
盖茨比浏览器.js
export const onPreRouteUpdate = () => {
setTimeout(() => {
document.getElementById("loader-wrapper").style.display = "none"
}, 1000)
}
推荐阅读
- visual-studio - 在 Visual Studio 中使用 Qt 远程对象(带有 qt 插件)
- machine-learning - 模型训练比应有的速度慢得多,并且 slurm 输出一直说作业步骤创建仍然被禁用,正在重试(请求的节点很忙)
- javascript - 鼠标事件侦听器在 vanilla JavaScript 中不起作用
- mysql - 列“d.discount_amount”必须出现在 GROUP BY 子句中或在聚合函数中使用
- npm - 在 Prestashop 中 Webpack 错误编译主题
- python - 与 Django 的多个不同的数据库连接
- unit-testing - clojure.test 失败的输出中的圆括号是什么意思?
- java - 在java中捕获sql开发人员脚本输出
- php - 使用 cURL 和 Laravel 登录到一个肥皂 API
- javascript - 为什么这种尝试检索数组的最小数量不起作用?