当前位置: 首页 > news >正文

小说网站建设方案书ppt模板如室设计网站

小说网站建设方案书ppt模板,如室设计网站,php网站cms,重庆网址前言#xff1a; 在一个表格中#xff0c;需要展示100条数据#xff0c;当每条数据里面需要承载的内容很多#xff0c;需要渲染的元素也很多的时候#xff0c;容易造成页面加载的速度很慢#xff0c;不能给用户提供很好的体验时#xff0c;懒加载是优化页面加载速度的方… 前言         在一个表格中需要展示100条数据当每条数据里面需要承载的内容很多需要渲染的元素也很多的时候容易造成页面加载的速度很慢不能给用户提供很好的体验时懒加载是优化页面加载速度的方法之一。 策略         前端在接受到api返回的数据的时候可以先根据数据总的条数进行遍历给每一项初始化简单的dom进行渲染占位通过IntersectionObserver对每一项元素进行监听当初始dom出现在页面视口的时候需要替换掉初始dom渲染真实dom。这样可以实现在初始dom出现在视口内时替换掉初始dom渲染真实dom并取消对该dom的监听实现只需加载一次首次加载多少个真实dom取决于可视区域跟初始dom的高度。 React中使用LazyBuilder实现页面懒加载方法一 与方法一不同之处 方法一元素出现在可视区域内即渲染真实dom一旦消失在可视区域内即渲染初始dom 方法二元素只要出现在可视区域内一次即渲染真实dom并且取消对该dom的监听只需加载一次 LazyBuilder.jsx import React, { Component, createRef } from react; class LazyBuilder extends Component {static defaultProps {initComponent: null,initHeight: null,controller: null,className: null,style: null,}/*** param {Object} props* param {JSX.Element} [props.initComponent] - 默认组件* param {Number} [props.initHeight] - 组件高度* param {LazyController} [props.controller] - LazyController*/constructor(props) {super(props);this._ref createRef();this.controller this.props.controller instanceof LazyController ? this.props.controller : new LazyController();this.state {isLoading: true,initStyle: {width: 100%,height: props.initHeight},key: lazy_${Math.random().toString(16).slice(2)},}}componentDidMount() {// 页面初始化时对所有元素进行绑定监听this.controller.observe(this._ref.current, this.updateShowElement.bind(this));}// 组件销毁时componentWillUnmount() {const { autoDispose } this.props;if (autoDispose this.controller.size() 0) {this.controller.dispose();return;}this.controller.unobserve(this._ref.current);}updateShowElement () {// 元素出现在视口以内this.setState({isLoading: false,initStyle: null,});}render () {const { children, initComponent } this.props;const { isLoading, initStyle } this.state;const className [lazy-builder-item, this.props.className].filter(item typeof item string).join(\s);return (div id{this.state.key} ref{this._ref} className{className} style{Object.assign({}, initStyle, this.props.style)}{isLoading ? initComponent : children}/div);} }class LazyController {constructor(){// 定义map来存储所有的dom项this._map new Map();// IntersectionObserver 对每一项元素进行监听this.observer new IntersectionObserver((entries) {for (const entry of entries) {// isIntersecting: true - 出现在视口 false - 隐藏视口以外if (entry.isIntersecting) {const updateShowElement this._map.get(entry.target);if (typeof updateShowElement function) {updateShowElement()}this.unobserve(entry.target);}}});}// 观察指定DOMobserve (target, callback) {if (this.observer !this.has(target)) {this._map.set(target, callback);this.observer.observe(target);}}// 取消对指定DOM的观察unobserve (target) {if (this.observer this.has(target)) {this.observer.unobserve(target);this._map.delete(target);}}// 判断一个DOM是否正在被观察has (target) {return this._map.has(target);}// 返回正在观测中的DOM数量size () {return this._map.size();}// 停止对所有DOM的观测并销毁IntersectionObserver实例dispose () {if (this.observer null) {throw new Error(observer未初始化);}this._map.clear();this.observer.disconnect();this.observer null;} }export {LazyBuilder,LazyController, } Cp.jsx export default class Cp extends Component {constructor(props){super(props)// 创建controllerthis.controller new LazyController();this.state {// 模拟数据dataList: new Array(100).fill().map((item, index) index 1)}}componentWillUnmount() {this.controller.dispose();}render(){const {dataList} this.statereturn (div{Array.isArray(dataList) dataList.length 0? dataList.map((item, index) {return LazyBuilder key{index}initHeight{200} // 初始dom高度controller{this.controller} // controllerdiv style{{width: 100%, height: 200px}}{第${item}个元素}/div/LazyBuilder}): null}/div)} } 初次加载 滚动后
http://www.sczhlp.com/news/159384/

相关文章:

  • 汉川网站推广服务网络营销案例分析和启示
  • 餐饮加盟手机网站建设html网页设计主题大全
  • 邯郸手机建站价格深圳品牌火锅店加盟
  • 福州百度企业网站seo猎头建设网站
  • 网络推广的网站高端女装有哪些品牌
  • 网站后台管理系统论文网站建设 开发网站代码
  • 如何做好专业类网站个人网站备案入口
  • 夫妻网站开发2016广州网站设计公司
  • python能做网站开发吗不用写代码做的网站
  • 做封面下载网站销售网站建设
  • 微小店网站建设哪家好沂水网站开发
  • 网站备案要多少天唐山网站建设多少钱
  • 网站程序风格全国中高风险地区一览
  • 电子商务网站建设 代码网站建设用什么系统好
  • 桂林分销网站开发东莞公司注册哪家好
  • 学校网站需求如何做购物网站的后台
  • 做网站的属于什么专业免费设计logo网站有哪些
  • php购物网站开发桐城市住房城乡建设局网站
  • 网站的建设与维护工资想做外贸做哪些网站好
  • 人社网站和微信平台建设方案互联网广告联盟
  • 养殖企业网站网站大多用源码来做吗
  • 做海报有什么好的网站推荐微信小程序加盟
  • 建设电子商务网站的目的和意义墨子学院seo
  • 全网营销推广运营培训学校seo臻系统
  • 江门免费建站免费设计公司logo设计
  • 网页建站怎么设置移动网站开发课程设计
  • 织梦cms如何做网站莱西网站建设哪家好
  • asp网站链接access站群系统软件
  • 滕州市建设网站泰安软件公司
  • 建设h网站风险大吗厦门免费自助建站模板