TypeScript 错误:类型“void”不可分配给类型“SetStateAction<string>”

时间:2021-04-28 09:43:27

标签: reactjs typescript types arguments state

我有一个字符串类型状态:

const [name, setName] = React.useState<string>("");

还有一个验证长度函数,我在处理第二个参数“值”时遇到了问题,意图是 React setState 类型:

const validateStringLength = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, value: React.SetStateAction<string>) => {
    if (e.currentTarget.value.length <= 47) {
      setName(e.currentTarget.value);
    }
  };

这是我的输入:

<Input
  onChange={(e) => validateStringLength(e.target.value, setName(name)}
  value={name}
/>

这是我的错误:

enter image description here

谢谢大家。

1 个答案:

答案 0 :(得分:0)

   //value type changes
   const validateStringLength = (
        e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
        value: **React.Dispatch<React.SetStateAction<string>>**
      ) => {
        if (e.currentTarget.value.length <= 47) {
          value(e.currentTarget.value);
        }
      }

     //setName doesn't receive parameters
     <Input
        onChange={(e) => validateStringLength(e, setName)}
        value={name}
     />