首页 > 其他分享 >react项目中不同宽度断点处理

react项目中不同宽度断点处理

时间:2024-08-07 18:41:44浏览次数:7  
标签:const log matchMedia react width window 宽度 console 断点

当react项目中,你需要通过判断当前屏幕宽度改变,对不同宽度断点进行不同的处理,例如,当屏幕宽度缩小至768px及以下时,需要将某一个属性值改变,或者是当屏幕宽度缩小或者放大到某一宽度时,需要调用某个方法

使用window.matchMedia()监听媒体查询
import React, { useEffect } from 'react';  
  
function ResponsiveComponent() {  
  useEffect(() => {  
    // 定义不同的媒体查询  
    const smallScreen = window.matchMedia('(max-width: 600px)');  
    const mediumScreen = window.matchMedia('(min-width: 601px) and (max-width: 992px)');  
    const largeScreen = window.matchMedia('(min-width: 993px) and (max-width: 1200px)');  
    const xlScreen = window.matchMedia('(min-width: 1201px) and (max-width: 1536px)');  
    const xxlScreen = window.matchMedia('(min-width: 1537px)');  
  
    // 定义响应不同屏幕大小的方法  
    const handleSmallScreen = () => {  
      console.log('Small screen');  
      // 调用适合小屏幕的方法  
    };  
  
    const handleMediumScreen = () => {  
      console.log('Medium screen');  
      // 调用适合中屏幕的方法  
    };  
  
    const handleLargeScreen = () => {  
      console.log('Large screen');  
      // 调用适合大屏幕的方法  
    };  
  
    const handleXlScreen = () => {  
      console.log('XL screen');  
      // 调用适合XL屏幕的方法  
    };  
  
    const handleXxlScreen = () => {  
      console.log('XXL screen');  
      // 调用适合XXL屏幕的方法  
    };  
  
    // 监听变化  
    smallScreen.addListener(handleSmallScreen);  
    mediumScreen.addListener(handleMediumScreen);  
    largeScreen.addListener(handleLargeScreen);  
    xlScreen.addListener(handleXlScreen);  
    xxlScreen.addListener(handleXxlScreen);  
  
    // 初始调用  
    smallScreen.matches ? handleSmallScreen() : null;  
    mediumScreen.matches ? handleMediumScreen() : null;  
    largeScreen.matches ? handleLargeScreen() : null;  
    xlScreen.matches ? handleXlScreen() : null;  
    xxlScreen.matches ? handleXxlScreen() : null;  
  
    // 清理  
    return () => {  
      smallScreen.removeListener(handleSmallScreen);  
      mediumScreen.removeListener(handleMediumScreen);  
      largeScreen.removeListener(handleLargeScreen);  
      xlScreen.removeListener(handleXlScreen);  
      xxlScreen.removeListener(handleXxlScreen);  
    };  
  }, []);  
  
  return (  
    <div>  
      {/* 你的内容 */}  
    </div>  
  );  
}  
  
export default ResponsiveComponent;
注意
  • useEffect中的清理函数确保了当组件卸载时,所有的事件监听器都会被移除,避免内存泄漏。
  • 你可以根据需要调整媒体查询的断点值,以匹配你的设计或Tailwind CSS的断点设置。
  • 这种方式不仅限于调用console.log,你可以在其中执行任何你需要的JavaScript代码,比如更新状态、发送数据到服务器等。

标签:const,log,matchMedia,react,width,window,宽度,console,断点
From: https://www.cnblogs.com/sxliu414/p/18347625

相关文章

  • echarts图标如何自适应宽度
    echarts图标直接设置宽度100%会默认魏100px,需要自适应方法如下图标html<el-col:span="8"><divid="userNianling_three"style="width:100%;height:500px;"/>......
  • FastReport不通过触发文本框宽度改变字体大小
    FastReport无法根据字数超出文本框高度而去改变字体大小,所以写了以下方法简单提供一个思路1privatevoidText_AfterData(objectsender,EventArgse)2{3doublemaxHeight=337;4doubletxtHeight=((TextObject)sender).Height;5......
  • Charles断点操作&弱网操作
    #断点是方便修改测试数据,无需到后台去操作,修改数据后可以看到页面数据是否正常1.所有环境都已经配置完成2.打开模拟器,上传需要用的软件(这里使用adb命令上传软件)3.打开Charles,关闭网页代理,只抓app的包4.打开软件,点击登录,输入账号和密码,1/1,点击登录,在login打断点5.打开断......
  • react 监控props的变化
    react监控props的变化在React组件中,可以使用生命周期方法componentWillReceiveProps来监控props的变化。但是,这个方法在新版React(16.3以后)中已被弃用。取而代之的是,可以使用新的生命周期方法getDerivedStateFromProps或者类的自定义方法来实现相同的功能。以下是使用get......
  • React与Electron与ts一些组件配置与交互遇到的问题
    React同vue一样都是组件化的,React更加的复杂多变,当我们需要改变页面中的内容时不仅仅要在直接关联的布局页面进行修改,步骤大致如下:在当前直接布局页面中增加布局组件函数,比如:renderRightView(){//TODORV++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++re......
  • 使用react+node调用科大讯飞api实现实时语音听写(流式版)
    前言--踩坑过程一时间心血来潮,想用科大讯飞的api来做一个语音实时转文字,也是走了很多弯路,边写边查边生成,最后算是完成了。功能实现了但是没有做UI。本来想试试光靠不要服务端光靠前端直接调用科大讯飞的api来实现,但是发现太慢了,四五秒才蹦出来一个字。然后没办法,搭建了一个......
  • Vue和React谁更牛逼?看了你就有答案
    你好同学,我是沐爸,欢迎点赞、收藏和关注!个人知乎、公众号"沐爸空间"使用Chrome浏览器,安装Vue.jsDevtools和ReactDeveloperTools浏览器插件后,打开网站即可知晓当前网站是使用的Vue框架还是React框架。如果无法去墙外,可以访问这个极简插件。Vue.jsDevtoolsReac......
  • react、vue组件编译区别&template解析原理
    react、vue组件打包编译为js时的区别1.react组件打包为js后,jsx会被编译为React.createElement.比如:antd的button.js(函数式组件直接returnjsx)constInternalButton=(props,ref)=>{//React.createElement第三个参数children一般兼容传数组和分开多个参数传递俩种形式......
  • react-hook-form验证
    import{useForm}from"react-hook-form";import{zodResolver}from"@hookform/resolvers/zod";importi18nextfrom"i18next";import{z}from"zod";import{zodI18nMap}from"zod-i18n-map";//Impor......
  • antd react form.list动态增减表单项Switch受控
    importReact,{useState}from'react';import{Form,Input,Switch,Button}from'antd';constDemo=()=>{const[switches,setSwitches]=useState({});constonFinish=(values)=>{console.log('Received......