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

如何在MUI Typography组件中渲染React状态中的错误信息?

解决方案

核心问题很简单,你只需要直接把error状态变量插入到Typography组件中即可,同时要注意把错误判断逻辑放到表单提交的处理函数里(避免组件渲染时反复触发setState导致无限重渲染)。

步骤1:修正错误判断的位置

不要在组件顶层直接写if判断,把这些逻辑放到表单提交的处理函数中,比如:

const [error, setError] = useState('');
const [submitted, setSubmitted] = useState(false);

// 表单提交处理函数
const handleSubmit = (e) => {
  e.preventDefault();
  // 重置之前的错误信息
  setError('');

  if (email === '' || password === '') {
    setError('Sign in attempt failed');
    setSubmitted(false);
  } else if (!verifyPassword.test(password) || !validated) {
    setError('Please complete all fields to log in');
    setSubmitted(false);
  } else {
    // 验证通过的逻辑,比如提交表单
    setSubmitted(true);
  }
};

步骤2:在Typography中渲染错误信息

直接在你写的errorMessage函数组件里,把{error}放到Typography标签内即可,还可以优化显示逻辑,用条件渲染替代style控制:

const errorMessage = () => {
  // 如果error为空,直接返回null不渲染
  if (!error) return null;

  return (
    <div className="error">
      <Typography variant="h6" sx={{ m: 1 }} color="red">
        {error}
      </Typography>
    </div>
  );
};

步骤3:在表单中调用这个错误信息组件

在表单的底部(比如提交按钮下方)调用{errorMessage()}或者直接把这段逻辑内联到JSX中:

<form onSubmit={handleSubmit}>
  {/* 表单输入框等内容 */}
  <button type="submit">Sign In</button>
  {errorMessage()}
</form>

这样当用户提交表单且验证不通过时,error状态会被设置为对应的文本,Typography就会自动渲染出错误信息,验证通过时则不会显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:25:03