반응형
입력 파일 상태에 대한 정의 유형: 반응+타입스크립트
파일 개체 내부 상태의 유형을 정의하는 동안 다음 오류가 발생합니다. 기본적으로 파일을 선택하고 값을 상위 구성 요소로 전송하는 작업을 수행하는 업로드 구성 요소가 있습니다. 나는 이것을 타이프스크립트 방식으로 시도하고 있는데 이것을 없앨 수가 없다.
샌드박스 링크:
업로드
import * as React from "react";
import { Button } from "@material-ui/core";
import { useState } from "react";
interface UploaderProps {
fileType?: string | AcceptedFileType[];
}
enum AcceptedFileType {
Text = ".txt",
Gif = ".gif",
Jpeg = ".jpg",
Png = ".png",
Doc = ".doc",
AllImages = "image/*",
AllVideos = "video/*",
AllAudios = "audio/*"
}
export const Upload = (props: UploaderProps): JSX.Element => {
const { fileType } = props;
const acceptedFormats: string | AcceptedFileType[] =
typeof fileType === "string"
? fileType
: Array.isArray(fileType)
? fileType?.join(",")
: AcceptedFileType.Text;
const [selectedFiles, setSelectedFiles] = useState<File>(null);
const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {
setSelectedFiles(event?.target?.files?.[0]);
};
const onUpload = () => {
// eslint-disable-next-line no-console
console.log(selectedFiles);
};
return (
<>
<Button
variant="contained"
component="label"
style={{ textTransform: "none" }}
>
<input
hidden
type="file"
accept={acceptedFormats}
onChange={handleFileSelect}
/>
<span> Choose file to upload</span>
</Button>
<Button
color="primary"
disabled={!selectedFiles}
style={{ textTransform: "none" }}
onClick={onUpload}
>
Upload
</Button>
</>
);
};
누가 도와줄 수 있나요?
다음 사항을 준수해야 합니다:
const [selectedFiles, setSelectedFiles] = useState<File | undefined>(undefined);
const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {
setSelectedFiles(event?.target?.files?.[0]);
};
설정할 때 값에 유형이 포함되기 때문입니다.
이렇게 하면 값이 정의되지 않을 수 있으므로 사용하기 전에 값을 확인해야 합니다.
파일이 있을 경우 다음과 같이 주장을 사용할 수 있습니다:
setSelectedFiles(event?.target?.files?.[0]!);
형식은 로 유지하지만 자바스크립트()에서 약간 특이하기 때문에 여전히 사용합니다.
반응형
'개발하자' 카테고리의 다른 글
| 주피터 노트북의 다른 디렉토리에 py 파일 가져오기 (1) | 2023.10.10 |
|---|---|
| 파이썬으로 ssh-agent를 영구적으로 시작하는 방법은? (0) | 2023.10.09 |
| python FASTAPI를 사용하여 Xero에 새 연락처 추가 (0) | 2023.10.08 |
| 플러터 리버팟: 첫 번째 실행이 실패한 후 FutureProvider를 트리거하는 방법은 무엇입니까? (0) | 2023.10.08 |
| terraform plan이 Error를 반환합니다: 지원되지 않는 인수 (1) | 2023.10.07 |