Stack/TypeScript
[TS / React] props 전달
7ingout
2022. 7. 27. 11:19
TS-REACT-TUTORIAL
components/Greeting.tsx
import React from 'react';
type GreetingsProps = {
name: string;
mark: string
}
const Greetings = ({ name, mark } : GreetingsProps ) => {
return (
<div>
Hello, {name} {mark}
</div>
);
};
export default Greetings;
App2.tsx
import React from 'react';
import Greetings from './components/Greetings';
const App2 = () => {
return (
<div>
<Greetings name="Green" mark="hihi"/>
</div>
);
};
export default App2;
components/UserList.tsx
import React, { useState } from 'react';
import User from './User';
// 배열안에 들어갈 객체 타입을 지정
// 자식 컴포넌트로 넘겨주기 위해 export
export type UserType = {
id: number;
name: string;
age: number;
position: string;
}
const UserList = () => {
const [userList, setUserList ] = useState<UserType[]>([
{
id: 0,
name: "김그린",
age: 24,
position: "front-end"
},
{
id: 1,
name: "이블루",
age: 26,
position: "back-end"
}
])
return (
<div>
{userList.map(user=><User key={user.id} user={user}></User>)}
</div>
);
};
export default UserList;
components/User.tsx
import React from 'react';
import { UserType } from './UserList';
type UserProps= {
// 부모 컴포넌트에 import 해온 타입을 재사용
user: UserType
}
const User = ( {user}: UserProps ) => {
const { name, age, position } = user
return (
<div>
<p>이름: {name}</p>
<p>나이: {age}</p>
<p>포지션: {position}</p>
</div>
);
};
export default User;
App2.tsx
import React from 'react';
// import Greetings from './components/Greetings';
import UserList from './components/UserList';
const App2 = () => {
return (
<div>
{/* <Greetings name="Green" mark="hihi"/> */}
<UserList />
</div>
);
};
export default App2;