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

做网站需要什么配置网上商城平台

做网站需要什么配置,网上商城平台,05网补充答案全部,诏安县城乡建设局网站React 组件性能优化的核心是减少渲染真实 DOM 节点的频率,减少 Virtual DOM 比对的频率。 1. 组件卸载前进行清理操作 window 注册的全局事件, 以及定时器 useEffect(()>{return ()>{// do somethingclearTimeout(tiemr)window.removeEventListener(xxx, c…

React 组件性能优化的核心减少渲染真实 DOM 节点的频率,减少 Virtual DOM 比对的频率。

1. 组件卸载前进行清理操作

window 注册的全局事件, 以及定时器

useEffect(()=>{return ()=>{// do somethingclearTimeout(tiemr)window.removeEventListener('xxx', calback)}
},[])

2. PureComponent

  1. 什么是纯组件
    纯组件会对组件输入数据进行浅层比较,如果当前输入数据和上次输入数据相同组件不会重新渲染
  2. 什么是浅层比较
    比较引用数据类型在内存中的引用地址是否相同,比较基本数据类型值是否相同
  3. 如何实现纯组件
    类组件继承 PureComponent 类,函数组件使用 memo 方法
  4. 为什么不直接进行 diff 操作, 而是要先进行浅层比较,浅层比较难道没有性能消耗吗?
    和进行 diff 比较操作相比,浅层比较将消耗更少的性能。diff 操作会重新遍历整颗 virtualDOM 树, 而浅层比较只操作当前组件的 state 和 props。

3. shouldComponentUpdate

纯组件只能进行浅层比较,要进行深层比较,使用 shouldComponentUpdate,它用于编写自定义比较逻辑。

返回 true 重新渲染组件,返回 false 阻止重新渲染。

函数的第一个参数为 nextProps, 第二个参数为 nextState.

 shouldComponentUpdate(nextProps, nextState) {if (this.state.name !== nextState.name || this.state.age !== nextState.age) {return true}return false}

4. React.memo

为 memo 传递比较逻辑

使用 memo方法自定义比较逻辑,用于执行深层比较。

比较函数的第一个参数为上一次的 props, 比较函数的第二个参数为下一次的 props, 比较函数返回 true, 不进行渲染, 比较函数返回 false, 组件重新渲染.

    const ShowPersonMemo = memo(ShowPerson, comparePerson)function comparePerson(prevProps, nextProps) {if (prevProps.person.name !== nextProps.person.name ||prevProps.person.age !== nextProps.person.age) {return false}return true}

5. 使用组件懒加载

使用组件懒加载可以减少 bundle 文件大小, 加快组件呈递速度.

  1. 路由组件懒加载
 import React, { lazy, Suspense } from "react"import { BrowserRouter, Link, Route, Switch } from "react-router-dom"// 打包时生成对应名字的chunkconst Home = lazy(() => import(/* webpackChunkName: "Home" */ "./Home"))const List = lazy(() => import(/* webpackChunkName: "List" */ "./List"))function App() {return (<BrowserRouter><Link to="/">Home</Link><Link to="/list">List</Link><Switch>// 组件未加载完成展示loading<Suspense fallback={<div>Loading</div>}><Route path="/" component={Home} exact /><Route path="/list" component={List} /></Suspense></Switch></BrowserRouter>)}export default App
  1. 根据条件进行组件懒加载

    适用于组件不会随条件频繁切换

    import React, { lazy, Suspense } from "react"function App() {let LazyComponent = nullif (true) {LazyComponent = lazy(() => import(/* webpackChunkName: "Home" */ "./Home"))} else {LazyComponent = lazy(() => import(/* webpackChunkName: "List" */ "./List"))}return (<Suspense fallback={<div>Loading</div>}><LazyComponent /></Suspense>)
    }export default App
    

6. 使用 Fragment 避免额外标记

7. 不要使用内联函数定义

8. 在构造函数中进行函数this绑定

9. 类组件中的箭头函数

10. 避免使用内联样式属性

11. 优化条件渲染

12. 为组件创建错误边界

错误边界涉及到两个生命周期函数, 分别为 getDerivedStateFromErrorcomponentDidCatch.
– getDerivedStateFromError 为静态方法, 方法中需要返回一个对象, 该对象会和state对象进行合并, 用于更改应用程序状态.

– componentDidCatch 方法用于记录应用程序错误信息. 该方法的参数就是错误对象.
ErrorBoundaries.js

import React from "react"
import App from "./App"
export default class ErrorBoundaries extends React.Component {constructor() {super()this.state = {hasError: false}}componentDidCatch(error) {console.log("componentDidCatch")}static getDerivedStateFromError() {console.log("getDerivedStateFromError")return {hasError: true}}render() {if (this.state.hasError) {return <div>发生了错误</div>}return <App />}
}

App.js

import React from "react"
export default class App extends React.Component {render() {// throw new Error("lalala")return <div>App works</div>}
}

index.js

import React from "react"
import ReactDOM from "react-dom"
import ErrorBoundaries from "./ErrorBoundaries"
ReactDOM.render(<ErrorBoundaries />, document.getElementById("root"))

注意: 错误边界不能捕获异步错误, 比如点击按钮时发生的错误.

13. 避免数据结构突变

14. 依赖优化

主要是对包进行优化
参考:重构之路:webpack打包体积优化(超详细)

http://www.yayakq.cn/news/525479/

相关文章:

  • 大兴网站开发网站建设咨询白酒最有效的推广方式
  • 自己怎么做机构网站老地方在线观看免费资源大全
  • 海口网站制作价格承德网站网站建设
  • 公司企业网站建设多少钱海南网站设计公司
  • 网站开发需要什么软件有哪些环境设计案例网站
  • 网站建设与用户需求分析桥梁建设杂志有假网站吗
  • 网站 劣势wordpress聚合插件
  • 邢台网站建设开发网站开发的问题
  • 蒲城矿建设备制造厂网站网站开发文档的示例
  • 关于学校网站建设网站搭建分站需要多少钱
  • 手机网站下拉列表老外做的中国汉字网站
  • 微九州合作网站一家专门做鞋子的网站
  • 网站改版 数据迁移wordpress exploit
  • 如何将网站和域名绑定网站建设类的计入什么科目
  • 教育网站 网页赏析大企业宣传片
  • 视频封面制作网站专业做网站的页面设计
  • 教育网站设制下载石家庄网站建设外包公司哪家好
  • 海南建设银行官网招聘网站中文网页设计模板下载
  • 句容网站定制随州网站建设便宜
  • 泉州做外贸网站做外贸网站怎么访问外国网站
  • 多语言网站 用什么cms制作视频的软件手机
  • 网页设计建立站点步骤网站做动态图片大全
  • python做网站框架4大门户网站
  • 网站制作原理长兴县住房建设局网站
  • 购物网站开发需求网站建设和网页设计视频教程
  • 动漫网站建设建设一个网站的费用构成
  • 快速搭建网站推荐网站开发实战作业答案
  • 重庆 网站定制百度网站权重查询
  • 企业在公司做的网站遇到的问题中国联通业绩
  • 大学生兼职网站策划书农村自建房设计图软件