1.使用方法

  1. import useResponsive from '../../hooks/useResponsive';
  2. const smUp = useResponsive('up', 'sm');
  3. const mdUp = useResponsive('up', 'md');
  4. function(){
  5. return (
  6. {smUp && (
  7. <Typography variant="body2" sx={{ mt: { md: -2 } }}>
  8. Dont have an account? {''}
  9. <NextLink href={PATH_AUTH.register} passHref>
  10. <Link variant="subtitle2">Get started</Link>
  11. </NextLink>
  12. </Typography>
  13. )}
  14. </HeaderStyle>
  15. {mdUp && (
  16. <LoginLeft/>
  17. )}
  18. {!smUp && (
  19. <Typography variant="body2" align="center" sx={{ mt: 3 }}>
  20. Dont have an account?{' '}
  21. <NextLink href={PATH_AUTH.register} passHref>
  22. <Link variant="subtitle2">Get started</Link>
  23. </NextLink>
  24. </Typography>
  25. )}
  26. )
  27. }

2.根据mui封装的hook

  1. hooks/useResponsive
  2. import { Breakpoint } from '@mui/material';
  3. import { useTheme } from '@mui/material/styles';
  4. import useMediaQuery from '@mui/material/useMediaQuery';
  5. // ----------------------------------------------------------------------
  6. type Query = 'up' | 'down' | 'between' | 'only';
  7. type Key = Breakpoint | number;
  8. type Start = Breakpoint | number;
  9. type End = Breakpoint | number;
  10. export default function useResponsive(query: Query, key?: Key, start?: Start, end?: End) {
  11. const theme = useTheme();
  12. const mediaUp = useMediaQuery(theme.breakpoints.up(key as Key));
  13. const mediaDown = useMediaQuery(theme.breakpoints.down(key as Key));
  14. const mediaBetween = useMediaQuery(theme.breakpoints.between(start as Start, end as End));
  15. const mediaOnly = useMediaQuery(theme.breakpoints.only(key as Breakpoint));
  16. if (query === 'up') {
  17. return mediaUp;
  18. }
  19. if (query === 'down') {
  20. return mediaDown;
  21. }
  22. if (query === 'between') {
  23. return mediaBetween;
  24. }
  25. if (query === 'only') {
  26. return mediaOnly;
  27. }
  28. }

3.Mui官网关于useMediaQuery的描述

监听与 CSS 媒体查询的匹配的内容https://mui.com/zh/components/use-media-query/

在项目中是结合了另外两个Api….暂时没看