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

React中MUI Data Grid电话号码字段格式化属性咨询

MUI Data Grid 电话号码字段校验与格式化方案

在MUI Data Grid中没有直接对应HTML pattern属性的配置项,要实现电话号码的格式校验和格式化,可通过以下两种常用方式:

方式一:使用preProcessEditCellProps做提交前校验

该方法能在编辑单元格的内容提交前验证格式,不符合规则时可标记错误并给出提示:

const columns = [
  // 其他列配置...
  {
    field: "phone",
    headerName: "phone",
    width: 180,
    editable: true,
    preProcessEditCellProps: (params) => {
      const phonePattern = /^\d{3}-\d{3}-\d{4}$/;
      const isValid = phonePattern.test(params.props.value);
      return {
        ...params.props,
        error: !isValid,
        helperText: isValid ? "" : "请输入XXX-XXX-XXXX格式的电话号码",
      };
    },
  },
];

方式二:自定义editComponent使用带pattern的输入框

通过自定义编辑组件,直接使用MUI TextField并配置pattern属性,实现和原生HTML输入框一致的校验逻辑:

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

const columns = [
  // 其他列配置...
  {
    field: "phone",
    headerName: "phone",
    width: 180,
    editable: true,
    editComponent: (params) => {
      const phonePattern = /^\d{3}-\d{3}-\d{4}$/;
      const isValid = params.value ? phonePattern.test(params.value) : true;
      return (
        <TextField
          fullWidth
          value={params.value || ""}
          onChange={(e) => params.onChange(e.target.value)}
          pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}"
          error={!isValid}
          helperText={!isValid ? "格式错误,应为XXX-XXX-XXXX" : ""}
        />
      );
    },
  },
];

官方文档参考

MUI官方文档的「Data Grid - Cell Editing」章节,详细介绍了自定义编辑组件、输入校验的实现方案,包括preProcessEditCellProps的使用场景和自定义editComponent的具体方法。

内容的提问来源于stack exchange,提问作者fatemeh lohrasbi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:00:07