[React+TypeScript] Functional Component 정의 방법
16315 단어 ReactTypeScript
React Hooks가 온 후 거의 Functional Component를 사용하기 시작했다.
인코딩할 때 기본 매개 변수 지정과children 지정은 비망록으로 남아 있기 때문에 어떻게 해야 합니까?
먼저 제목 부분과 속성 정의 부분의 예입니다.
속성은 생략할 수 없음
Props
과 속성은 생략할 수 있음PropsOptional
을 정의했습니다.import React from "react";
import { storiesOf } from "@storybook/react";
const s = storiesOf("Functional Component", module);
// 省略不可
type Props = {
x: number;
y: number;
};
// 省略可能のプロパティあり
type PropsOptional = {
x?: number;
y: number;
};
구성 요소의 사용 예시 부분은 Storybook을 사용합니다.https://qiita.com/otanu/items/dd06d6702f673268c74e
props에서 매개 변수 정의
기본 모드.const Ex = (props: Props) => {
return (
<div>
{props.x}:{props.y}
</div>
);
};
s.add("Ex", () => <Ex x={1} y={2} />);
props에서 매개 변수 정의(선택 사항)
속성을 생략하기 위해 ?
를 추가하여 정의하면 x?: number | undefined
으로 정의됩니다.
속성undefined
을 지정하지 않으면 undefined
에 들어가기 때문에 처리해야 하기 때문에 undefined
에 들어가도 상관없다.Object형 속성에서 이 방법을 호출할 때 명확하게 검사하지 않으면 오류가 발생하기 때문에 좀 번거롭다.type PropsOptional = {
x?: number;
y: number;
};
const ExOptional = (props: PropsOptional) => {
return (
<div>
{props.x === undefined ? "なし" : props.x}:{props.y}
</div>
);
};
s.add("ExOptional", () => (
<>
<ExOptional y={2} />
<ExOptional x={1} y={2} />
</>
));
정의defaultProps
를 사용하면 기본값을 지정할 수 있습니다.만약 이런 방법이라면 속성Props
을 생략할 수 없기 때문에 속성undefined
을 정의할 수 없기 때문에 검사할 필요가 없다.const ExOptional2 = (props: Props) => {
return (
<div>
{props.x}:{props.y}
</div>
);
};
ExOptional2.defaultProps = {
x: 1
};
s.add("ExOptional2", () => <ExOptional2 y={2} />);
만약 유형의 정의만 본다면 x는 생략할 수 없을 것 같아서 좀 메스꺼워요.
그러나 어셈블리를 사용할 때 VScode 보완 사항은 x?
로 표시되고 처리에서는 undefined
으로 표시되지 않습니다.
이거Props
가 정답인 것 같은데?
매개변수 산열에서 정의
Functional Component의 정의 방법으로서도props 매개 변수의 정의가 아니라Hash를 사용할 수 있습니다.const ExHash = ({ x, y }: Props) => {
return (
<div>
{x}:{y}
</div>
);
};
s.add("ExHash", () => <ExHash x={1} y={2} />);
프로필을 일일이 지정하지 않아도 속성에 접근할 수 있고 매개 변수에 다음 기본값을 지정할 수 있는 점이 장점이다.const ExHashOptional = ({ x = 10, y }: PropsOptional) => {
return (
<div>
{x}:{y}
</div>
);
};
s.add("ExHashOptional", () => <ExHashOptional y={2} />);
속성을 모아 다른 구성 요소에 전달하는 경우 props
파라미터를 사용하고 간단한 구성 요소의 경우 Hash를 사용하여 이러한 구분을 지정합니다.
children 속성을 사용할 때
호출자로부터 서브어셈블리를 전달할 때 속성children
의 속성을 정의합니다.
children을 생략할 수 있는 경우 children?
로 지정하면 됩니다.type PropsWithChild = {
x?: number;
y: number;
children: React.ReactNode;
};
const ExWithChild = ({ x = 10, y, children }: PropsWithChild) => {
return (
<div>
{x}:{y}
{children}
</div>
);
};
s.add("ExWithChild", () => (
<ExWithChild y={2}>
<p>子</p>
</ExWithChild>
));
FunctionComponent 유형 React.FC(FunctionComponent)
을 사용하는 경우 추가로 유형 children
을 정의하지 않아도 됩니다.(사용 가능PropsOptional
const ExWithChildFC: React.FC<PropsOptional> = ({ x = 10, y, children }) => {
return (
<div>
{x}:{y + 1}
{children}
</div>
);
};
s.add("ExWithChildFC", () => (
<>
<ExWithChildFC y={2} />
<ExWithChildFC y={2}>
<p>子</p>
</ExWithChildFC>
</>
));
Reference
이 문제에 관하여([React+TypeScript] Functional Component 정의 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otanu/items/434cd326754ac989fcbe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const Ex = (props: Props) => {
return (
<div>
{props.x}:{props.y}
</div>
);
};
s.add("Ex", () => <Ex x={1} y={2} />);
속성을 생략하기 위해
?
를 추가하여 정의하면 x?: number | undefined
으로 정의됩니다.속성
undefined
을 지정하지 않으면 undefined
에 들어가기 때문에 처리해야 하기 때문에 undefined
에 들어가도 상관없다.Object형 속성에서 이 방법을 호출할 때 명확하게 검사하지 않으면 오류가 발생하기 때문에 좀 번거롭다.type PropsOptional = {
x?: number;
y: number;
};
const ExOptional = (props: PropsOptional) => {
return (
<div>
{props.x === undefined ? "なし" : props.x}:{props.y}
</div>
);
};
s.add("ExOptional", () => (
<>
<ExOptional y={2} />
<ExOptional x={1} y={2} />
</>
));
정의defaultProps
를 사용하면 기본값을 지정할 수 있습니다.만약 이런 방법이라면 속성Props
을 생략할 수 없기 때문에 속성undefined
을 정의할 수 없기 때문에 검사할 필요가 없다.const ExOptional2 = (props: Props) => {
return (
<div>
{props.x}:{props.y}
</div>
);
};
ExOptional2.defaultProps = {
x: 1
};
s.add("ExOptional2", () => <ExOptional2 y={2} />);
만약 유형의 정의만 본다면 x는 생략할 수 없을 것 같아서 좀 메스꺼워요.그러나 어셈블리를 사용할 때 VScode 보완 사항은
x?
로 표시되고 처리에서는 undefined
으로 표시되지 않습니다.이거
Props
가 정답인 것 같은데?매개변수 산열에서 정의
Functional Component의 정의 방법으로서도props 매개 변수의 정의가 아니라Hash를 사용할 수 있습니다.const ExHash = ({ x, y }: Props) => {
return (
<div>
{x}:{y}
</div>
);
};
s.add("ExHash", () => <ExHash x={1} y={2} />);
프로필을 일일이 지정하지 않아도 속성에 접근할 수 있고 매개 변수에 다음 기본값을 지정할 수 있는 점이 장점이다.const ExHashOptional = ({ x = 10, y }: PropsOptional) => {
return (
<div>
{x}:{y}
</div>
);
};
s.add("ExHashOptional", () => <ExHashOptional y={2} />);
속성을 모아 다른 구성 요소에 전달하는 경우 props
파라미터를 사용하고 간단한 구성 요소의 경우 Hash를 사용하여 이러한 구분을 지정합니다.
children 속성을 사용할 때
호출자로부터 서브어셈블리를 전달할 때 속성children
의 속성을 정의합니다.
children을 생략할 수 있는 경우 children?
로 지정하면 됩니다.type PropsWithChild = {
x?: number;
y: number;
children: React.ReactNode;
};
const ExWithChild = ({ x = 10, y, children }: PropsWithChild) => {
return (
<div>
{x}:{y}
{children}
</div>
);
};
s.add("ExWithChild", () => (
<ExWithChild y={2}>
<p>子</p>
</ExWithChild>
));
FunctionComponent 유형 React.FC(FunctionComponent)
을 사용하는 경우 추가로 유형 children
을 정의하지 않아도 됩니다.(사용 가능PropsOptional
const ExWithChildFC: React.FC<PropsOptional> = ({ x = 10, y, children }) => {
return (
<div>
{x}:{y + 1}
{children}
</div>
);
};
s.add("ExWithChildFC", () => (
<>
<ExWithChildFC y={2} />
<ExWithChildFC y={2}>
<p>子</p>
</ExWithChildFC>
</>
));
Reference
이 문제에 관하여([React+TypeScript] Functional Component 정의 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/otanu/items/434cd326754ac989fcbe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const ExHash = ({ x, y }: Props) => {
return (
<div>
{x}:{y}
</div>
);
};
s.add("ExHash", () => <ExHash x={1} y={2} />);
const ExHashOptional = ({ x = 10, y }: PropsOptional) => {
return (
<div>
{x}:{y}
</div>
);
};
s.add("ExHashOptional", () => <ExHashOptional y={2} />);
호출자로부터 서브어셈블리를 전달할 때 속성
children
의 속성을 정의합니다.children을 생략할 수 있는 경우
children?
로 지정하면 됩니다.type PropsWithChild = {
x?: number;
y: number;
children: React.ReactNode;
};
const ExWithChild = ({ x = 10, y, children }: PropsWithChild) => {
return (
<div>
{x}:{y}
{children}
</div>
);
};
s.add("ExWithChild", () => (
<ExWithChild y={2}>
<p>子</p>
</ExWithChild>
));
FunctionComponent 유형 React.FC(FunctionComponent)
을 사용하는 경우 추가로 유형 children
을 정의하지 않아도 됩니다.(사용 가능PropsOptional
const ExWithChildFC: React.FC<PropsOptional> = ({ x = 10, y, children }) => {
return (
<div>
{x}:{y + 1}
{children}
</div>
);
};
s.add("ExWithChildFC", () => (
<>
<ExWithChildFC y={2} />
<ExWithChildFC y={2}>
<p>子</p>
</ExWithChildFC>
</>
));
Reference
이 문제에 관하여([React+TypeScript] Functional Component 정의 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/otanu/items/434cd326754ac989fcbe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)