css
#__loading {position:fixed;top: 0;left: 0;z-index: 99999;display: flex;align-items: center;justify-content: center;width: 100%;height: 100%;background: rgba(0, 0, 0, 0);
}
页面代码
使用了antd的Spin组件
import React from 'react'
import ReactDOM from 'react-dom'
import { Spin } from 'antd'class Loading {show (timeout) {const config = {tip: 'Loading...',}if (timeout) {window.setTimeout(() => {document.body.removeChild(document.getElementById('__loading'))}, timeout)}const dom = document.createElement('div')dom.setAttribute('id', '__loading')document.body.appendChild(dom)ReactDOM.render(<Spin {...config} />, dom)}hide() {document.body.removeChild(document.getElementById('__loading'))}
}export default new Loading()
其实是没有必要使用antd的Spin组件,自己通过css实现一个Loading效果,网上百度一堆这种代码,我这里使用antd的组件是因为我自己项目使用了antd,保证组件风格统一性。
注意点:
刚开始我使用的css样式是position:absolute; 然后我发现我的Loading一会在页面中间,一会不在顶部。
通过查看css发现,自己的页面的body是可以滑动的,导致Loading位置时不时变化,如果页面不滑动Loading在页面中间,如果滑动就不在了。所以应该把css样式修改成position:fixed;就没问题了。(至于为啥自己页面body为啥可以滑动,是因为自己项目问题)。
推广一下自己开发的微信小程序,有兴趣的朋友可以玩一玩