类型“Dispatch<SetStateAction<any[]>>”不可分配给类型“(values?: string) => void”

Kre*_*021 13 typescript reactjs typescript-typings react-hooks react-hook-form

我对 typecipt 很陌生,并试图制作一个基本的引脚输入页面。我的代码的沙箱链接。虽然它可以工作,但我在第 10 行的 onChange 函数中收到此错误:

类型“Dispatch<SetStateAction<any[]>>”不可分配给类型“(values?: string) => void”。参数“value”和“values”的类型不兼容。类型“string”不可分配给类型“SetStateAction<any[]>”.ts(2322)

我正在导入react-hook-pin-input,但找不到任何在 ts 中使用 onChange 的演示。请帮我重写 onChange ,使 valueE 成为正在输入的值。可以在这里找到react-hook-pin-input的源代码 - https://github.com/elevensky/react-hook-pin-input

Den*_*ash 14

请注意,它onChange是类型(values?: string) => void,并且您传递了setValueE它是类型React.Dispatch<React.SetStateAction<string[]>>,这意味着setValueE接受string[]并且您string在写入时传递了类型onChange={setValueE}

\n

它只对你错误地起作用,因为你valueE用字符串初始化,然后将其更改为string类型,为了使其按预期工作,请执行以下操作:

\n
export default function App() {\n  const [valueE, setValueE] = useState<string[]>([]);\n  return (\n    <div className="App">\n      <h1>\xe9\xaa\x8c\xe8\xaf\x81\xe7\xa0\x81</h1>\n      <PinInput\n        fields={4}\n        values={valueE}\n        onChange={(string) => setValueE([...string])}\n      />\n      <div> {valueE} </div>\n    </div>\n  );\n}\n
Run Code Online (Sandbox Code Playgroud)\n

编辑幸福共鸣-v3lwz

\n