React 如何在输入表单中显示 ErrorMessage

React how to display ErrorMessage in Input Form

我正在使用 react 和 antd。
我用的是antd的Input组件
如果输入的字符超过 10 个,我想在输入表单底部显示一条错误消息。
我想用antd的errorMessage.

code

import React from "react";
import { Input } from "antd";

const App = () => {
  const [value, setValue] = React.useState(null);
  const [onSave, setOnSave] = React.useState(null);
  const handleInputChange = React.useCallback((e) => {
    setValue(Number(e.target.value));
  }, []);

  const onSaveBlur = React.useCallback(() => {
    if (String(value).length < 10) {
      setOnSave(true);
    } else {
      setOnSave(false);
    }
  }, [value]);
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
      <Input
        type="number"
        value={value}
        onChange={handleInputChange}
        onBlur={onSaveBlur}
      ></Input>
    </div>
  );
};

export default App;

试试这个:

  import "./styles.css";
import React from "react";
import { Input, Form } from "antd";

const App = () => {
  const [value, setValue] = React.useState(null);
  const [onSave, setOnSave] = React.useState(null);
  const handleInputChange = React.useCallback((e) => {
    setValue(e.target.value);
  }, []);

  const onSaveBlur = React.useCallback(() => {
    if (String(value).length < 10) {
      setOnSave(true);
    } else {
      setOnSave(false);
    }
  }, [value]);
  return (
    <div className="App">
      <Form>
        <Form.Item
          label="Number"
          name="number"
          rules={[
            { required: true, message: "Please input value!" },
            { max: 10, message: "length should be less then 10 letters!" }
          ]}
        >
          <Input
            type="number"
            value={value}
            onChange={handleInputChange}
            onBlur={onSaveBlur}
          ></Input>
        </Form.Item>
      </Form>
    </div>
  );
};

export default App;

您应该添加一个错误状态并按照以下条件显示它:

import React from "react";
import { Input } from "antd";

const App = () => {
  const [value, setValue] = React.useState(null);
  const [onSave, setOnSave] = React.useState(null);
  const [error, setError] = React.useState(null)
  
  const handleInputChange = React.useCallback((e) => {
    setValue(Number(e.target.value));
  }, []);

  const onSaveBlur = React.useCallback(() => {
    if (String(value).length < 10) {
      setOnSave(true);
    } else {
      setError(isLowerCase ? null : 'error message')
      setOnSave(false);
    }
  }, [value]);
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
      <Input
        type="number"
        value={value}
        onChange={handleInputChange}
        onBlur={onSaveBlur}
      ></Input>
      <div role="alert" style={{color: 'red'}}>
        {error}
      </div>
    </div>
  );
};

export default App;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

您可以在 Form.Item 内添加默认 AntD 规则,如下所示

<Form.Item
   rules = {[{  max:10, message: "length should be less then 10 
   letters!"}]}
>
   <Input placeholder="Username"/>
 </Form.Item>