You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何结合媒体查询动态设置Material UI组件props

Material UI v5 响应式切换组件props实现方法

针对你需要在屏幕宽度小于600px时把Typography的variant从h1切换为h5的需求,有两种常用实现方式,按需选择即可:

方法1:直接使用属性断点对象(最简推荐)

MUI v5 原生支持所有组件核心props接收断点映射对象,框架会自动根据当前屏幕宽度匹配对应值,完全不需要手写媒体查询逻辑:

import Typography from '@mui/material/Typography';

export default function PageTitle() {
  return (
    <Typography 
      // xs对应<600px屏幕,sm及以上(≥600px)用h1
      variant={{ xs: 'h5', sm: 'h1' }}
    >
      页面标题
    </Typography>
  );
}

MUI默认断点规则:xs为0-599.95px、sm为600-899.95px,刚好匹配你的尺寸要求;如果你自定义过主题breakpoints,这里的断点标识会自动匹配你设置的阈值。

方法2:结合useMediaQuery钩子动态传值(适合复杂逻辑场景)

如果你需要在切换属性时叠加其他业务判断,可以用官方提供的useMediaQuery钩子监听媒体查询状态,动态给props赋值,和你之前用style hook写媒体查询的逻辑一致:

import { Typography, useTheme, useMediaQuery } from '@mui/material';

export default function PageTitle() {
  const theme = useTheme();
  // 匹配宽度小于600px的场景
  const isMobile = useMediaQuery(theme.breakpoints.down('sm'));

  return (
    <Typography variant={isMobile ? 'h5' : 'h1'}>
      页面标题
    </Typography>
  );
}

如果需要自定义媒体查询规则,也可以直接给useMediaQuery传媒体查询字符串,比如useMediaQuery('(max-width:600px)')效果完全一致。


内容的提问来源于stack exchange,提问作者Lakruwan Pathirage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:49:13