iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >分析React Hooks响应式布局
  • 796
分享到

分析React Hooks响应式布局

2024-04-02 19:04:59 796人浏览 八月长安
摘要

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

本篇内容主要讲解“分析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响应式布局”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 分析React Hooks响应式布局

本文链接: https://www.lsjlt.com/news/85170.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 分析React Hooks响应式布局
    本篇内容主要讲解“分析React Hooks响应式布局”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析React Hooks响应式布局”吧!1. 方案一:in...
    99+
    2022-10-19
  • html中响应式布局的示例分析
    这篇文章主要为大家展示了“html中响应式布局的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html中响应式布局的示例分析”这篇文章吧。 响应式布局...
    99+
    2022-10-19
  • css3中media响应式布局的示例分析
    这篇文章主要介绍了css3中media响应式布局的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。响应式布局可以为不同终端的用户提供更...
    99+
    2022-10-19
  • web开发中响应式布局和自适应布局的示例分析
    这篇文章给大家分享的是有关web开发中响应式布局和自适应布局的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   1. 设置 Meta 标签   大多数移动浏览器将H...
    99+
    2022-10-19
  • web开发之响应式布局的示例分析
    这篇文章将为大家详细讲解有关web开发之响应式布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言响应式Web设计可以让一个网站同时适配多种设备和多个屏幕...
    99+
    2022-10-19
  • HTML5+CSS3基础响应式页面布局实例分析
    这篇文章主要介绍了HTML5+CSS3基础响应式页面布局实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇HTML5+CSS3基础响应式页面布局实例分析文章都会有所收获,下...
    99+
    2022-10-19
  • 什么是css响应式布局
    CSS响应式布局是一种能够自动适应不同屏幕大小的网页布局方法。它通过使用媒体查询和弹性布局等技术,根据浏览器视口宽度和设备屏幕大小,动态地调整网页元素的布局、字体、颜色等属性,以提供最佳的用户体验。其核心思想是,不再让页面固定在一个特定的宽...
    99+
    2023-11-21
    css 响应式布局
  • Css3怎么做响应式布局
    本篇内容介绍了“ Css3怎么做响应式布局”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Css3操作响应式...
    99+
    2022-10-19
  • 什么是web响应式布局
    什么是web响应式布局,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。响应式布局的开发基础知识本章主要分为以下几个部分&bull;正确理解响应式设计&bull;响...
    99+
    2023-06-08
  • 响应式React Native Echarts组件的示例分析
    小编给大家分享一下响应式React Native Echarts组件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言...
    99+
    2022-10-19
  • bootstrap怎么实现响应式布局
    这篇文章主要介绍“bootstrap怎么实现响应式布局”,在日常操作中,相信很多人在bootstrap怎么实现响应式布局问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”boot...
    99+
    2022-10-19
  • rem如何实现响应式布局
    这篇文章主要介绍“rem如何实现响应式布局”,在日常操作中,相信很多人在rem如何实现响应式布局问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”rem如何实现响应式布局”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • CSS怎么实现响应式布局
    小编给大家分享一下CSS怎么实现响应式布局,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!用CSS实现响应式布局响应式布局感觉很高大上,很难,但实际上只用CSS也能实现响应式布局要用的就是CSS中的没接查询,下面就介绍一下怎...
    99+
    2023-06-08
  • CSS3响应模式布局怎么实现
    这篇文章主要介绍了CSS3响应模式布局怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS3响应模式布局怎么实现文章都会有所收获,下面我们一起来看看吧。REM方法calc()从字面我们可以把他理解为一个...
    99+
    2023-07-04
  • 怎么用CSS创建响应式布局
    本篇内容介绍了“怎么用CSS创建响应式布局”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!现如今在Web前端...
    99+
    2022-10-19
  • html5响应式布局的详细介绍
    本篇内容主要讲解“html5响应式布局的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5响应式布局的详细介绍”吧!一、什么是响应式布局 ...
    99+
    2022-10-19
  • echarts实现响应式定位和布局
    ECharts 图表显示在用户指定高宽的 DOM 节点(容器)中。 有时候我们希望在 PC 和 移动设备上都能够很好的展示图表的内容,实现响应式的设计,为了解决这个问题,EChart...
    99+
    2022-11-13
  • bootstrap响应式布局的概念是什么
    这篇文章主要讲解了“bootstrap响应式布局的概念是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“bootstrap响应式布局的概念是什么”吧! ...
    99+
    2022-10-19
  • html中怎么写响应式布局代码
    这篇文章主要讲解了“html中怎么写响应式布局代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“html中怎么写响应式布局代码”吧!   1.直接在CSS...
    99+
    2022-10-19
  • html5响应式布局的技巧有哪些
    这篇文章主要介绍“html5响应式布局的技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“html5响应式布局的技巧有哪些”文章能帮助大家解决问题。 一、什...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作