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

如何让Material UI <Pagination>组件适配暗黑模式?

解决Material-UI Pagination组件不跟随Joy UI明暗模式的问题

你遇到的核心问题是混用了Material UI(MUI)基础组件和Joy UI的主题系统——两者的主题、颜色模式机制不互通,所以MUI的<Pagination>识别不了Joy UI的明暗模式切换。

两种解决思路:

1. 改用Joy UI的Pagination组件(推荐)

Joy UI的组件会自动适配自身主题的颜色模式,直接替换即可:

  • 替换导入路径:
// 原Material UI组件导入
// import Pagination from '@mui/material/Pagination';

// 改为Joy UI组件
import Pagination from '@mui/joy/Pagination';

你的现有组件props基本都能兼容,无需大幅修改代码,替换后组件会自动跟随明暗模式切换样式。

2. 手动为Material UI的Pagination适配Joy UI的颜色模式

如果不想替换组件,可以通过useColorScheme获取当前模式,手动自定义样式:

import { useColorScheme } from "@mui/joy/styles";
import Pagination from '@mui/material/Pagination';

// 在组件内部获取当前模式
const { mode } = useColorScheme();

// 渲染Pagination时通过sx自定义适配样式
<Pagination
  count={Math.ceil(blogProps.totalPosts / POSTS_PER_PAGE)}
  page={currentPage}
  onChange={handlePageChange}
  showFirstButton
  showLastButton
  color="primary"
  sx={{
    p: 3,
    mx: "auto",
    // 根据模式调整内部元素的文字和背景色
    '& .MuiPaginationItem-root': {
      color: mode === 'dark' ? '#fff' : '#000',
      backgroundColor: mode === 'dark' ? '#333' : '#fff',
      '&.Mui-selected': {
        backgroundColor: mode === 'dark' ? '#1976d2' : '#1976d2',
      },
      '&:hover': {
        backgroundColor: mode === 'dark' ? '#444' : '#f0f0f0',
      }
    }
  }}
/>

这种方式需要手动覆盖Pagination内部元素的样式,适配成本较高,不如直接改用Joy UI组件高效。

内容的提问来源于stack exchange,提问作者Nick Hodges

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:55:17