我的编程空间,编程开发者的网络收藏夹
学习永远不晚

分析React Hooks响应式布局

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

分析React Hooks响应式布局

本篇内容主要讲解“分析React Hooks响应式布局”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析React Hooks响应式布局”吧!

1. 方案一:innerWidth

一个很简单粗略的方案,是个前端都知道:

const MyComponent = () => {    // 当前窗口宽度    const width = window.innerWidth;    // 邻介值    const breakpoint = 620;    // 宽度小于620时渲染手机组件,反之桌面组件    return width < breakpoint ? <MobileComponent /> : <DesktopComponent />;  }

这个简单的解决方案肯定会起作用。根据用户设备的窗口宽度,我们可以呈现桌面视图或手机视图。

但是,当调整窗口大小时,未解决宽度值的更新问题,可能会渲染错误的组件。

2. 方案二:Hooks+resize

说着也简单,监听resize事件时,触发useEffect改变数据。

const MyComponent = () => {    const [width, setWidth] = React.useState(window.innerWidth);    const breakpoint = 620;    React.useEffect(() => {      window.addEventListener("resize", () => setWidth(window.innerWidth));    }, []);    return width < breakpoint ? <MobileComponent /> : <DesktopComponent />;  }

但精通Hooks的你,一定知道这里存在内存性能消耗问题:resize事件没移除!

优化版本:

const useViewport = () => {    const [width, setWidth] = React.useState(window.innerWidth);    React.useEffect(() => {      const handleWindowResize = () => setWidth(window.innerWidth);      window.addEventListener("resize", handleWindowResize);      return () => window.removeEventListener("resize", handleWindowResize);    }, []);    return { width };  }

3. 方案三:构建useViewport

自定义React Hooks,可以将组件/函数最大程度的复用。构建一个也很简单:

const useViewport = () => {    const [width, setWidth] = React.useState(window.innerWidth);    React.useEffect(() => {      const handleWindowResize = () => setWidth(window.innerWidth);      window.addEventListener("resize", handleWindowResize);      return () => window.removeEventListener("resize", handleWindowResize);    }, []);    return { width };  }

精简后的组件代码:

const MyComponent = () => {    const { width } = useViewport();    const breakpoint = 620;    return width < breakpoint ? <MobileComponent /> : <DesktopComponent />;  }

分析React Hooks响应式布局

但是这里还有另一个性能问题:

响应式布局影响的是多个组件,如果在多处使用useViewport,这将浪费性能。

分析React Hooks响应式布局

这时就需要另一个React亲儿子:React Context(上下文) 来帮忙。

4.终极方案:Hooks+Context

我们将创建一个新的文件viewportContext,在其中可以存储当前视口大小的状态以及计算逻辑。

const viewportContext = React.createContext({});  const ViewportProvider = ({ children }) => {    // 顺带监听下高度,备用    const [width, setWidth] = React.useState(window.innerWidth);    const [height, setHeight] = React.useState(window.innerHeight);    const handleWindowResize = () => {      setWidth(window.innerWidth);      setHeight(window.innerHeight);    }    React.useEffect(() => {      window.addEventListener("resize", handleWindowResize);      return () => window.removeEventListener("resize", handleWindowResize);    }, []);    return (      <viewportContext.Provider value={{ width, height }}>        {children}      </viewportContext.Provider>    );  };  const useViewport = () => {    const { width, height } = React.useContext(viewportContext);    return { width, height };  }

紧接着,你需要在React根节点,确保已经包裹住了App:

const App = () => {    return (      <ViewportProvider>        <AppComponent />      </ViewportProvider>    );  }

在往后的每次useViewport(),其实都只是共享Hooks。

const MyComponent = () => {    const { width } = useViewport();    const breakpoint = 620;    return width < breakpoint ? <MobileComponent /> : <DesktopComponent />;  }

分析React Hooks响应式布局

到此,相信大家对“分析React Hooks响应式布局”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

分析React Hooks响应式布局

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

响应式布局的缺点分析与改进建议

响应式布局在当今的网页设计中扮演着重要的角色。它可以使网页在不同的设备上都能够适应并展示出最佳的用户体验。然而,响应式布局也存在一些缺点,需要我们进行分析和改进。首先,响应式布局可能导致加载速度变慢。通常情况下,为了实现响应式布局,我们需
响应式布局的缺点分析与改进建议
2024-02-23

解析响应式布局的作用和优势

响应式布局的作用及优势解析随着移动互联网的快速发展,人们对网页的浏览方式也发生了变化。传统的固定布局在不同设备上可能出现显示不完整、排版混乱等问题,影响用户体验。而响应式布局则成为了解决这一问题的最佳方案。本文将从响应式布局的作用及优势两
解析响应式布局的作用和优势
2024-01-29

什么是css响应式布局

CSS响应式布局是一种能够自动适应不同屏幕大小的网页布局方法。它通过使用媒体查询和弹性布局等技术,根据浏览器视口宽度和设备屏幕大小,动态地调整网页元素的布局、字体、颜色等属性,以提供最佳的用户体验。其核心思想是,不再让页面固定在一个特定的宽
什么是css响应式布局
2023-11-21

html响应式布局怎么写

html 响应式布局至关重要,因为它允许网站在不同屏幕尺寸上自适应呈现。编写响应式布局的方法包括使用媒体查询和弹性单位。步骤包括:添加视口元标记、使用流体网格系统、使用弹性字体大小、以及根据屏幕尺寸使用媒体查询。优点包括增强用户体验、提高搜
html响应式布局怎么写
2024-05-16

什么是web响应式布局

什么是web响应式布局,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。响应式布局的开发基础知识本章主要分为以下几个部分•正确理解响应式设计•响应式设计的步骤&
2023-06-08

CSS怎么实现响应式布局

小编给大家分享一下CSS怎么实现响应式布局,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!用CSS实现响应式布局响应式布局感觉很高大上,很难,但实际上只用CSS也能实现响应式布局要用的就是CSS中的没接查询,下面就介绍一下怎
2023-06-08

rem如何实现响应式布局

这篇文章主要介绍“rem如何实现响应式布局”,在日常操作中,相信很多人在rem如何实现响应式布局问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”rem如何实现响应式布局”的疑惑有所帮助!接下来,请跟着小编一起来
2023-07-05

探究响应式布局的多种形式

深入了解响应式布局的各种类型,需要具体代码示例引言:随着移动设备的普及和多屏幕浏览的需求增加,响应式布局变得越来越重要。在构建网站或应用程序时,如何适应不同尺寸的屏幕成为一个关键问题。通过响应式布局可以实现一套代码适应多种设备,提供更好的
探究响应式布局的多种形式
2024-02-24

layui table响应式布局的设计与实现(构建响应式layui table布局的方法)

layui表格响应式布局指南本文介绍了构建响应式layuitable布局的详细方法,包括初始化表格、设置媒体查询、调整表头宽度、隐藏/显示列和添加可滚动区域。通过遵循这些步骤,可以创建可在各种设备屏幕尺寸上无缝显示数据的响应式表格。
layui table响应式布局的设计与实现(构建响应式layui table布局的方法)
2024-04-02

响应式布局为何备受青睐?优点解析!

响应式布局为何备受青睐?优点解析!随着移动设备的普及和互联网的快速发展,响应式布局越来越受到开发者和网站设计师的青睐。响应式布局是一种能够自适应不同设备的设计模式,它可以根据用户使用的设备和屏幕尺寸自动调整页面的布局和内容显示方式,为用户
响应式布局为何备受青睐?优点解析!
2024-02-22

CSS3响应模式布局怎么实现

这篇文章主要介绍了CSS3响应模式布局怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS3响应模式布局怎么实现文章都会有所收获,下面我们一起来看看吧。REM方法calc()从字面我们可以把他理解为一个
2023-07-04

编程热搜

目录