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

未选日期点击Submit时,错误提示未红显及边框未变红问题求助

解决MUI DatePicker结合react-hook-form的错误样式问题

问题说明

点击Submit按钮但未选择日期时,错误消息可正常显示,但文本未高亮为红色,输入框边框也未变为红色,需在不添加额外CSS的前提下实现这两个效果。

当前效果:
当前组件效果

期望效果:
期望效果

使用技术栈:React、react-hook-form、@mui/x-date-pickers

解决方案

核心是利用MUI组件内置的错误状态,给DatePicker的内部TextField设置error属性,绑定react-hook-form的错误判断结果,即可自动触发内置的错误样式。

修改后的完整代码:

import React from "react";
import { useForm, Controller } from "react-hook-form";
import { LocalizationProvider, DatePicker } from "@mui/x-date-pickers";
import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs";
import Box from "@mui/material/Box";
import Button from "@mui/material/Button";

const DateComponent = () => {
  const {
    control,
    handleSubmit,
    formState: { errors },
  } = useForm();

  const onSubmit = (data) => {
    console.log("Formulario enviado:", data);
  };

  return (
    <form
      onSubmit={handleSubmit(onSubmit)}
      style={{ backgroundColor: "#fff", marginTop: "25px" }}
    >
      <Box width={300}>
        <Controller
          control={control}
          name="selectedDate"
          defaultValue={null}
          rules={{ required: true }}
          render={({ field }) => (
            <LocalizationProvider dateAdapter={AdapterDayjs}>
              <DatePicker
                label="Date"
                {...field}
                slotProps={{
                  textField: {
                    // 关键修改:添加error属性,绑定错误状态
                    error: !!errors.selectedDate,
                    helperText: errors.selectedDate ? "Campo requerido" : "",
                  },
                }}
              />
            </LocalizationProvider>
          )}
        />

        <Button type="submit" variant="contained" color="primary">
          Submit
        </Button>
      </Box>
    </form>
  );
};

export default DateComponent;

原理说明

MUI的TextField组件(DatePicker通过slotProps暴露内部的TextField配置)内置了error状态,开启后会自动触发以下样式:

  • 输入框边框变为红色
  • helperText文本颜色变为红色

只需通过!!errors.selectedDate将react-hook-form返回的错误对象转为布尔值,绑定到error属性,即可自动复用这些内置样式,无需额外编写CSS。

内容的提问来源于stack exchange,提问作者Jorge Leonardo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:35:18