类型为"any"的参数不可分配给类型为"never"的参数.ts(2345)


const [files, setFiles] = useState([])
const handleChange = (event: any) => {
setFiles.push(event.target.files[0].name)
return (<div>
{files.map((file: any) => (
<p>Hello!</p>
))}
</div>)
}

单击按钮时,我正在尝试将值推送到我的状态,然后映射我的状态以呈现 p 元素,但是当我尝试推送到 setFiles 时,我收到错误"类型'any'的参数不可分配给类型为'never'.ts(2345(的参数"。

您还需要使用any键入到文件状态:

const [files, setFiles] = useState([] as any)

此外,这行代码是错误的:

setFiles.push(event.target.files[0].name)

setFiles功能你知道它。

您应该使用:

setFiles(files.push(event.target.files[0].name))

但反应状态是不可变的。因此,您可以使用点差运算符,例如:

setFiles([...files, event.target.files[0].name])

由于反应状态是不可变的,.push(( 函数将不起作用,您可以使用 .concat(( 或 spread 运算符。

为了避免不必要的副作用,您必须使用回调包装组合数组逻辑。

setFiles(oldArray => [...oldArray, event.target.files[0].name])

setFiles(oldArray => oldArray.concat(event.target.files[0].name))

相关内容

  • 没有找到相关文章

最新更新