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

电商类网站建设需要多少钱搜狗网页

电商类网站建设需要多少钱,搜狗网页,德持建设集团有限公司网站,手机建站程序useLayoutEffect useLayoutEffect 是 React 中的一个 Hook,用于在浏览器重新绘制屏幕之前触发。与 useEffect 类似。 用法 useLayoutEffect(() > {// 副作用代码return () > {// 清理代码}}, [dependencies]);参数 setup:Effect处理函数,可以返回…

useLayoutEffect

useLayoutEffect 是 React 中的一个 Hook,用于在浏览器重新绘制屏幕之前触发。与 useEffect 类似。

用法


useLayoutEffect(() => {// 副作用代码return () => {// 清理代码}}, [dependencies]);

参数

  • setup:Effect处理函数,可以返回一个清理函数。组件挂载时执行setup,依赖项更新时先执行cleanup再执行setup,组件卸载时执行cleanup。

  • dependencies(可选):setup中使用到的响应式值列表(props、state等)。必须以数组形式编写如[dep1, dep2]。不传则每次重渲染都执行Effect。

返回值

useLayoutEffect 返回 undefined

区别(useLayoutEffect/useEffect)

区别useLayoutEffectuseEffect
执行时机浏览器完成布局和绘制之前执行副作用浏览器完成布局和绘制之后执行副作用
执行方式同步执行异步执行
DOM渲染阻塞DOM渲染不阻塞DOM渲染

测试DOM阻塞

下面这个例子展示了 useLayoutEffect 和 useEffect 在DOM渲染时的区别。useLayoutEffect 会阻塞DOM渲染,而 useEffect 不会。


import React, { useLayoutEffect, useEffect, useState } from 'react';function App() {const [count, setCount] = useState(0)//不阻塞DOM// useEffect(() => {//    for (let i = 0; i < 50000; i++) {//       //console.log(i);//       setCount(count => count + 1)//    }// }, []);//阻塞DOM// useLayoutEffect(() => {//    for (let i = 0; i < 50000; i++) {//       //console.log(i);//       setCount(count => count + 1)//    }// }, []);return (<div><div>app </div>{Array.from({ length: count }).map((_, index) => (<div key={index}>{index}</div>))}</div>);}export default App;

测试同步异步渲染

在下面的动画示例代码中:

  1. useEffect 实现的动画效果:

    • 初始渲染时 opacity: 0

    • 浏览器完成绘制

    • useEffect 异步执行,设置 opacity: 1

    • 用户可以看到完整的淡入动画过渡效果

  2. useLayoutEffect 实现的动画效果:

    • 初始渲染时 opacity: 0

    • DOM 更新后立即同步执行 useLayoutEffect

    • 设置 opacity: 1

    • 浏览器绘制时已经是最终状态

    • 用户看不到过渡动画效果


#app1 {width: 200px;height: 200px;background: red;}#app2 {width: 200px;height: 200px;background: blue;margin-top: 20px;position: absolute;top: 230px;}

import React, { useLayoutEffect, useEffect, useRef } from 'react';function App() {// 使用 useEffect 实现动画效果useEffect(() => {const app1 = document.getElementById('app1') as HTMLDivElement;app1.style.transition = 'opacity 3s';app1.style.opacity = '1';}, []);// 使用 useLayoutEffect 实现动画效果useLayoutEffect(() => {const app2 = document.getElementById('app2') as HTMLDivElement;app2.style.transition = 'opacity 3s';app2.style.opacity = '1';}, []);return (<div><div id="app1"  style={{ opacity: 0 }}>app1</div><div id="app2"  style={{ opacity: 0 }}>app2</div></div>);}export default App;

应用场景

  • 需要同步读取或更改DOM:例如,你需要读取元素的大小或位置并在渲染前进行调整。

  • 防止闪烁:在某些情况下,异步的useEffect可能会导致可见的布局跳动或闪烁。例如,动画的启动或某些可见的快速DOM更改。

  • 模拟生命周期方法:如果你正在将旧的类组件迁移到功能组件,并需要模拟 componentDidMount、componentDidUpdate和componentWillUnmount的同步行为。

案例

可以记录滚动条位置,等用户返回这个页面时,滚动到之前记录的位置。增强用户体验。


import React, { useLayoutEffect, useRef } from 'react';function App() {useLayoutEffect(() => {const list = document.getElementById('list') as HTMLUListElement;list.scrollTop = 900}, []);return (<ul id="list" style={{ height: '500px', overflowY: 'scroll' }}>{Array.from({ length: 500 }, (_, i) => (<li key={i}>Item {i + 1}</li>))}</ul>);}export default App;
http://www.dinnco.com/news/83535.html

相关文章:

  • 做外包哪个网站好一些手机百度app下载安装
  • 石家庄兼职做网站百度查找相似图片
  • 网站建设与推广是什么意思免费开网店免费供货
  • 网站建设的工作seo顾问阿亮
  • 礼品兑换网站怎么做百度非企渠道开户
  • 南昌做网站比较好的公司有哪些网站站长seo推广
  • 一个公司做网站需要注意什么seo是搜索引擎优化
  • 网站seo优化综合服务公司哪家好百度手机助手app
  • 政府网站 都是谁做的网络推广产品要给多少钱
  • 做网站上的图片如何设定分辨率夸克搜索网页版
  • 免费的海报模板网站网络推广的常用方法
  • 公司做网站推广百度和阿里巴巴网络营销策划方案模板范文
  • 可以做微积分的网站小红书网络营销策划方案
  • 网站建设怎么弄班级优化大师使用心得
  • 网站建站咨询利尔化学股票最新消息
  • 域名如何解绑一个网站seo快速排名首页
  • 国内做的好网站有哪些2020国内搜索引擎排行榜
  • 做网站的要求百度推广400电话
  • 天元建设集团有限公司嘉和新城seo网络推广排名
  • 济南建设网站平台专门做网站的公司
  • 百度南京代理商南京seo建站
  • 拱墅区做网站如何推广自己成为网红
  • 辽宁省招标投标监管网深圳网站优化推广
  • 网站模式下做淘宝客关键词优化的方法有哪些
  • 平台网站建设开票开什么内容爱站网关键词挖掘查询工具
  • 华阳路街道网站建设线上营销推广方式
  • 设计公司属于什么行业类型seo关键词报价查询
  • 如何使用服务器ip做网站宣传链接怎么做
  • 建云购网站吗网页模板下载
  • 建个网站需要服务器吗seo外包费用