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

Next.js14+DaisyUI项目使用MaterialTable报props.theme.direction未定义错误求助

解决MaterialTable在Next.js 14 + Daisy UI中出现的props.theme.direction未定义错误

这个错误的核心原因是MaterialTable依赖Material-UI的主题上下文(ThemeContext),但你的项目里没有提供这个上下文,导致组件无法读取props.theme.direction。以下是具体解决步骤:

1. 安装Material-UI核心依赖

MaterialTable基于Material-UI构建,需要先安装必要的依赖包:

npm install @mui/material @emotion/react @emotion/styled

2. 用ThemeProvider包裹MaterialTable

在你的页面组件中,引入Material-UI的ThemeProvider和createTheme,然后用它把MaterialTable包裹起来,提供主题上下文:

修改后的页面代码:

"use client";

import MaterialTable from "material-table";
import * as React from "react";
import { ThemeProvider, createTheme } from "@mui/material/styles";

// 创建基础主题(可根据需求自定义配置)
const theme = createTheme();

const CategoryPage = () => {
  return (
    <div className="h-screen p-6">
      <div style={{ maxWidth: "100%" }}>
        <ThemeProvider theme={theme}>
          <MaterialTable
            columns={[
              { title: "名字", field: "name" },
              { title: "姓氏", field: "surname" },
              { title: "出生年份", field: "birthYear", type: "numeric" },
              {
                title: "出生地",
                field: "birthCity",
                lookup: { 34: "伊斯坦布尔", 63: "尚勒乌尔法" },
              },
            ]}
            data={[
              {
                name: "Mehmet",
                surname: "Baran",
                birthYear: 1987,
                birthCity: 63,
              },
            ]}
            title="演示表格"
          />
        </ThemeProvider>
      </div>
    </div>
  );
};

export default CategoryPage;

补充说明

  • 如果项目全局需要Material-UI主题,也可以在根布局(app/layout.jsx)中添加ThemeProvider,这样所有子组件都能共享主题上下文,无需每个页面单独包裹。
  • Daisy UI和Material-UI的样式可能存在冲突,若出现样式异常,可通过调整CSS优先级或自定义主题参数来兼容。

内容的提问来源于stack exchange,提问作者Dingaan Letjane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:10:25