value我在以下部分收到的错误消息formData.append(key, value);:
\n\n\'unknown\' 类型的参数不可分配给 \n\'string | 类型的参数 斑点\'。类型“{}”缺少\n类型“Blob”的以下属性:大小、类型、arrayBuffer、切片以及另外 2 个属性。
\n
代码
\nconst uploadSubtitle = async e => {\n e.preventDefault();\n const file = fileInput.current.files[0];\n const res = await Axios.get(`/api/movies/${currentMovie.movieId}/subtitles?user=${user.id}`);\n const { url, fields } = res.data;\n const newUrl = `https://${url.split(\'/\')[3]}.s3.amazonaws.com`;\n const formData = new FormData();\n const formArray = Object.entries({ ...fields, file });\n formArray.forEach(([key, value]) => {\n formData.append(key, value);\n });\n //... further code\n };\n\n\n<form onSubmit={uploadSubtitle}>\n <input type=\'file\' name=\'subtitle\' ref={fileInput} accept=\'.srt\' />\n <button onClick={uploadSubtitle}>Upload</button>\n</form>\nRun Code Online (Sandbox Code Playgroud)\n … 我正在尝试使用useStateinside useEffect。我想访问和修改它内部的状态(useEffect),这里命名为isAuth并根据新状态渲染组件。
import React, { useState, useEffect } from 'react';
const Authentication = () => {
const [isAuth, setIsAuth] = useState(false);
useEffect(() => {
console.log(isAuth);
setIsAuth(true);
console.log(isAuth);
}, [isAuth]);
return <div>{isAuth ? <p>True</p> : <p>False</p>}</div>;
};
export default Authentication;
Run Code Online (Sandbox Code Playgroud)
事情是在控制台中我得到false, false, true, true.In而不是这个控制台,我希望第二个控制台消息是真的。有人可以解释它是如何发生的,以及我如何在组件呈现之前实际更改状态?