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

使用Node为后端、React为前端如何将数据库数据渲染到Material UI表格

实现方案

第一步:Node后端接口开发

  • 先安装所需依赖:npm install express cors mysql2(如果你用的是其他数据库,替换对应驱动即可)
const express = require('express');
const cors = require('cors');
const mysql = require('mysql2/promise');
const app = express();
const port = 3001;

// 允许前端跨域请求
app.use(cors());

// 替换为你自己的数据库连接配置
const dbConfig = {
  host: 'localhost',
  user: '数据库用户名',
  password: '数据库密码',
  database: '业务数据库名'
};

// 学院数据查询接口
app.get('/api/colleges', async (req, res) => {
  try {
    const connection = await mysql.createConnection(dbConfig);
    // SQL查询字段可以别名处理,直接匹配前端需要的字段名,减少前端格式化成本
    const [rows] = await connection.execute(`
      SELECT 
        college_name as collegeName, 
        registrar_name as registrarName, 
        phone_number as phoneNumber, 
        email_address as emailAddress 
      FROM 你的学院表名
    `);
    await connection.end();
    res.json(rows);
  } catch (err) {
    res.status(500).json({ error: err.message });
  }
});

app.listen(port, () => {
  console.log(`后端服务运行在端口${port}`);
});

第二步:React前端适配改造

  • 安装请求依赖(也可以直接用浏览器原生fetch):npm install axios
  • 改造原有表格组件,替换静态rows为动态请求的状态变量:
import { useState, useEffect } from 'react';
import axios from 'axios';
// 原有Material UI相关组件导入保持不变

function createData(collegeName, registrarName, phoneNumber, emailAddress, action) {
  return {collegeName , registrarName, phoneNumber, emailAddress, action };
}

export default function EnhancedTable() {
  // 替换原有静态rows为状态变量
  const [rows, setRows] = useState([]);

  useEffect(() => {
    // 组件挂载时拉取后端数据
    const fetchCollegeData = async () => {
      try {
        const res = await axios.get('http://localhost:3001/api/colleges');
        // 格式化数据适配表格要求,action字段可自定义为操作按钮配置
        const formattedRows = res.data.map(item => createData(
          item.collegeName,
          item.registrarName,
          item.phoneNumber,
          item.emailAddress,
          '操作' // 可替换为自定义的按钮组件
        ));
        setRows(formattedRows);
      } catch (err) {
        console.error('数据拉取失败:', err);
      }
    };
    fetchCollegeData();
  }, []);

  // 原有Material UI表格的所有渲染逻辑保持不变,直接使用rows变量即可
  // ... 剩余原有表格代码
}

注意:如果后端返回字段和createData要求的参数完全匹配,可以跳过格式化步骤直接赋值给rows;生产环境建议把接口地址配置到环境变量中,不要硬编码在组件里。

内容的提问来源于stack exchange,提问作者Estifanos Aschale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:36:03