该视频仅会员有权观看
立即开通课程「Next.js 前端应用开发实践」权限。
- 正在编写代码中,准备了两个数据结构来声明文件:
file
和 sad file
,使用 useState
来设置类型为 five
或 now
,代表用户要上传的文件。
- 创建了一个名为
image view URL
的数据结构和一个对应的 setImagePreviewURL
函数,使用 useState
默认为空白字符串,用于存储选中图片的预览地址。
- 设置了一个
file input
,使用 useRef
,默认值为 null
,类型为 HTMLInputElement
。
- 当用户选择图片后,可以创建一个图片预览,创建
createImagePreview
函数,接收类型为 File
的参数,在函数中声明并初始化一个 FileReader
,使用 readAsDataURL
方法来读取文件数据并设置 onload
事件处理函数,其中 setImagePreviewURL
将结果设置为字符串。
- 定义了一个上传图片文件的方法
createFile
,标记为 async
,接收 file
参数(类型为 File
)和 postID
参数(类型为 Number
),在函数内声明一个新的 FormData
实例并添加 file
字段,之后使用 API HTTP client
发送 POST 请求到 files
接口,并根据 response.status
判断文件是否上传成功,然后清空相关状态和输入值。
- 在发布内容后,如果文件存在,使用
createFile
方法请求上传该文件。
- 最后在 hook 中返回
file
, setFile
, fileInput
, imagePreviewURL
, setImagePreviewURL
, createImagePreview
, 和 createFile
。