首页 > 解决方案 > Material-ui 4.9.5 TextField 属性“必需”不起作用

问题描述

我有一个带有“必需”属性的简单 TextField。它在 html 'input' 元素中生成了 'required=""',因此不会触发所需的错误消息(我相信这是 TextField 'required' 属性的预期机制)。请参阅下面的代码和代码框

import React from "react";
import { TextField, Button } from "@material-ui/core";

export default function App() {
   return (

   <div className="App">
       <TextField required label="LoftyPine" />
       <Button variant="contained" onClick={() => {}}>
       Validate
      </Button>
   </div>

   );
}

相同 的代码沙箱

标签: reactjsmaterial-ui

解决方案


为了触发浏览器默认需要的错误信息,TextField需要在表单中,并且需要触发验证。有几种方法可以触发验证,例如单击按钮type="submit"或在表单上调用reportValidity

这是一个显示调用的示例reportValidity

import React from "react";
import { TextField, Button } from "@material-ui/core";

export default function App() {
  const formRef = React.useRef();
  return (
    <div className="App">
      <form ref={formRef}>
        <TextField required label="LoftyPine" />
        <Button
          variant="contained"
          onClick={() => formRef.current.reportValidity()}
        >
          Validate
        </Button>
      </form>
    </div>
  );
}

编辑必需的文本字段


推荐阅读