📅  最后修改于: 2023-12-03 14:50:35.857000             🧑  作者: Mango
反应骨架(React Skeleton)是一种前端技术,可以提高页面加载速度和用户体验。它是在网站尚未加载完全时,提供一个简单的UI框架,以展示网站的基本布局和元素。这样一来,用户无需等待所有内容加载完成后才能看到网页,而是可以在网页加载的同时看到部分内容,提高体验。
反应骨架通常为网站的主要视觉元素提供占位符,比如菜单、文章列表、Banner等,以及网站的基础样式(比如背景色、字体、边距等),让用户在网站还没有完全加载时,就可以感知到该网站的视觉风格,增强用户体验。
在网络较差的情况或者需要加载大量的数据时,反应骨架可以提高用户的等待体验。反应骨架在以下情况下被广泛使用:
反应骨架使用了React框架的特性,将页面元素渲染成一组基于最小样式的组件。这些组件的主要作用是占位,像骨架一样支撑显示内容的未来形状。一旦主要元素加载完成,反应骨架从HTML文档中移除,并用已加载内容替换掉原来的占位符。
使用React框架创建反应骨架需要使用到以下依赖:
npm install react react-dom styled-components
import React from 'react'
import styled from 'styled-components'
const ButtonSkeleton = styled.button`
display: inline-block;
width: 120px;
height: 40px;
background-color: #eee;
border: none;
border-radius: 5px;
`;
const App = () => (
<div>
<h1>Loading...</h1>
<ButtonSkeleton />
</div>
)
export default App
此时,页面上将会显示Loading...以及ButtonSkeleton。
为了在网站加载时先显示反应骨架,我们可以使用延迟加载。
import React, {useState, useEffect} from 'react'
import styled from 'styled-components'
const ButtonSkeleton = styled.button`
display: inline-block;
width: 120px;
height: 40px;
background-color: #eee;
border: none;
border-radius: 5px;
`;
const AppSkeleton = () => (
<div>
<h1>Loading...</h1>
<ButtonSkeleton />
</div>
)
export default AppSkeleton
import React, {useState, useEffect} from 'react'
import ReactDOM from 'react-dom'
import App from './App'
const AppSkeleton = /* ... 省略*/
const AppWrapper = () => {
const [isLoaded, setIsLoaded] = useState(false)
useEffect(() => {
// 延迟3秒,模拟网络加载
const timer = setTimeout(() => {
setIsLoaded(true)
clearTimeout(timer)
}, 3000)
}, [])
return (
<div>
{isLoaded ? <App /> : <AppSkeleton />}
</div>
)
}
ReactDOM.render(<AppWrapper />, document.getElementById('root'));
这就是反应骨架的工作原理,使用比较简单。
反应骨架可以很好地提高用户等待体验,特别是在网络条件比较恶劣或者数据量较大的情况下。通过React组件的特性,可以非常方便地实现反应骨架的功能。如果你的网站需要更好的用户体验,那么不妨试试反应骨架作为辅助方案。