웹 풀스택
[React / ts] props 사용해보기
kevinmj12
2025. 4. 10. 18:25
React에서 props는 컴포넌트 간에 데이터를 전달하는 속성(properties)이다.
부모 컴포넌트가 자식 컴포넌트에 값을 전달할 때 사용하며, 함수의 매개변수처럼 작동한다.
import React from "react";
interface MyProps {
weather: string;
}
const MyWeather: React.FC<MyProps> = (props) => {
return <div>오늘의 날씨는 {props.weather}입니다.</div>;
};
export default MyWeather;
타입스크립트에서는 다음과 같이 props를 사용할 수 있다.
MyProps라는 인터페이스를 생성한 뒤, MyWeather의 타입인 React.FC에 <MyProps>를 추가하여
MyWeather이라는 컴포넌트가 MyProps라는 타입의 props를 필요로 한다는 것을 알 수 있다.
그리고 이제 MyWeather에서는 인자로 들어온 props의 정보를 자유롭게 사용할 수 있다.
import "./App.css";
import MyWeather from "./MyWeather";
function App() {
return (
<div className="container">
<MyWeather/>
</div>
);
}
export default App;
MyWeather를 다른 파일에서 import하여 위와 같이 사용하려고 하면 에러가 발생한다.
weather' 속성이 '{}' 형식에 없지만 'MyProps' 형식에서 필수입니다. 라는 에러이다.
MyWeahter은 MyProps를 props로 받을 것을 기대하고 있는데, 이를 전달해주지 않았기 때문에 위 에러가 발생한다.
import "./App.css";
import MyWeather from "./MyWeather";
function App() {
return (
<div className="container">
<MyWeather weather="흐림" />
</div>
);
}
export default App;
새롭게 weather="흐림"을 추가하여 주면 에러가 발생하지 않고 정상 작동하는 것을 확인할 수 있다.
import React from "react";
interface MyProps {
weather: string;
children: React.ReactNode;
}
const MyWeather: React.FC<MyProps> = ({ children, weather }) => {
return (
<div>
{children}
<p></p>
오늘의 날씨는 {weather}입니다.
</div>
);
};
export default MyWeather;
단순한 string뿐만 아니라 React.ReactNode와 같은 컴포넌트도 props로 사용이 가능하다.
또한 props 자리에 {children, weather}과 같이 작성을 하고 밑의 코드에서 props. 을 붙이지 않고 사용할 수도 있다.