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))