react 首屏性能优化

首屏优化点:1.加载包(bundle.js)文件的大小,越小,首屏渲染速度越快 (按需加载)

      2.优先渲染用户直观看到的页面部分(懒加载)

 

技术点:react-loadable 、 react-lazyload

 

import React,{Component} from "react"
import {Link} from "react-router-dom"
import LazyLoad from 'react-lazyload'; //懒加载依赖
import Diag from "../component/diag"     //懒加载占位组件
import Loadable from 'react-loadable'; //按需加载依赖
import "../static/css/page2.scss"

const Loading = () => <div>Loading...</div>;

const Imgshow = Loadable({  //按需加载模块配置
    loader: () => import("../component/imgshow"),
    loading:Loading,
});

class B extends Component{
    state={
        pics:[
            require("../static/imgs/link.jpg"),
            require("../static/imgs/link1.jpg"),
            require("../static/imgs/link2.jpg"),
            require("../static/imgs/link3.jpg"),
            require("../static/imgs/link4.jpg"),
            require("../static/imgs/link5.jpg"),
            require("../static/imgs/link6.jpg"),
            require("../static/imgs/link7.jpg"),
            require("../static/imgs/link8.jpg"),
        ]
    };
    render(){
        return (
            <div>
                <ul className="lazyLi">
                    <li style={{height:"600px"}}></li>
                    {this.state.pics.map((item,index)=><li  key={index}>
                        <LazyLoad  height={200} placeholder={<Diag/>} debounce={200}>   //懒加载图片,当页面滚动此位置时,加载Imgshow组件
                            <Imgshow src={item}/>
                        </LazyLoad>
                    </li>)}
                </ul>
            </div>
        )
    }
}
export default B;

滚动前:

滚动后:

 多了一个4.chunk.js,页面滚动到此组件位置,采取加载此组件,减小了bundle 的文件大小,配合懒加载使用

 

react-lazyload : https://www.npmjs.com/package/react-lazyload

 

转载于:https://www.cnblogs.com/changyaoself/p/10326267.html

### React 应用加载性能优化的最佳实践 #### 减少不必要的计算和渲染工作 为了提升React应用的加载速度,应尽可能减少初次渲染时的工作量。这可以通过懒加载组件来实现,即只在需要的时候才加载特定模块或组件[^1]。 ```javascript import React, { Suspense } from 'react'; const LazyComponent = React.lazy(() => import('./LazyComponent')); function App() { return ( <div> <Suspense fallback={<div>Loading...</div>}> <LazyComponent /> </Suspense> </div> ); } ``` #### 利用硬件加速功能 对于涉及大量DOM操作或者复杂动画效果的情况,应该考虑采用GPU加速的方式来进行处理。例如,在CSS中指定`transform`属性而不是直接改变元素的位置,这样可以让浏览器更高效地完成这些任务。 #### 设置合理的缓存策略 通过配置HTTP响应头部信息(如`Cache-Control`, `Expires`),可以有效地控制静态资源文件在网络请求中的行为模式,从而加快页面再次访问的速度。此外,还可以利用Service Worker技术创建PWA应用程序,进一步增强用户的离线体验[^2]。 #### 预加载与预渲染 提前获取可能被使用的资源链接(图片、字体等),并通过`<link rel="preload">`标签告知浏览器优先下载;也可以尝试服务器端渲染(SSR),让HTML文档在发送给客户端之前就已经构建好部分内容,进而缩短白时间。 #### 使用钩子函数进行性能优化 针对频繁触发更新逻辑的地方,可借助`useCallback()` 和 `useMemo()` 来防止不必要重新计算带来的开销。这两个API可以帮助开发者更好地管理依赖关系列表以及记忆化昂贵运算的结果,最终达到提高效率的目的[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值