import React from 'react';
function Header(){
return (
<div>
<header>
Learn React
</header>
</div>
);
}
export default Header;
import Header from './components/Header';
function App() {
return (
<div className="App">
<Header />
</div>
);
}
export default App;
import React, { Component } from "react";
class Welcome extends React.Component {
render() {
return (
<div>
<header>
Learn React
</header>
</div>
);
}
}
export default Header;
import Header from './components/Header';
function App() {
return (
<div className="App">
<Header />
</div>
);
}
export default App;
순수 함수 : 입력값을 바꾸려 하지 않고 항상 동일한 입력값에 대해 동일한 결과를 반환
// App.js
import Header from './components/Header';
function App() {
return (
<div className="App">
<Header title={'Learn React A'}/> // props 넘기기
<Header title={'Learn React B'}/> // props 넘기기
<Header title={'Learn React C'}/> // props 넘기기
</div>
);
}
export default App;
// Header.js
import React from 'react';
function Header(props){ // props 받기
return (
<div>
<header>
{props.title} // props.title 접근
</header>
</div>
);
}
export default Header;
prop를 넘길 때 아무 값도 넘기지 않으면 default 값은 true다.
function App() {
return (
<div className="App">
<Welcome withImg={true} />
/* ↑ 같은 거 ↓ */
<Welcome withImg />
</div>
);
}
여러개의 props가 있을 경우 디스트럭처링(Destructuring) 통해 좀 더 간결하게 작성할 수 있다.
// App.js
function App() {
return (
<Welcome firstName="Yeah" lastName="Zing" withImg />
);
}
/* ↑ 같은 거 ↓ */
function App() {
const info = {
firstName: 'Yeah',
lastName: 'Zing',
withImg: true,
}
return (
<Welcome {...info} />
);
}
// Welcome.js
function Welcome(props) {
return (
<>
{props.withImg && <img src="ghibli.png" alt="welcome Ghibli" />}
{props.firstName} {props.lastName}
</>
);
}
/* ↑ 같은 거 ↓ */
function Welcome({withImg, firstName, lastName}) {
return (
<>
{withImg && <img src="ghibli.png" alt="welcome Ghibli" />}
{firstName} {lastName}
</>
);
}
props.children은 컴포넌트의 여는 태그와 닫는 태그 사이의 내용을 포함한다.
import Header from './components/Header';
function App() {
return (
<div className="App">
<Header title={'Learn React A'}/> // props.title
<Header>Hello world<Header/> // props.children
</div>
);
}
export default App;
props.children 활용법 #1
사용자 정의 컴포넌트가 일반적인 html 태그의 구조와 비슷할 때 props.children 활용한다.
일반적인 html 코드
<button onClick={() => alert('submit')}>제출하기</button>
<button onClick={() => alert('delete')}>삭제하기</button>
<button onClick={() => alert('add')}>추가하기</button>
사용자 정의 컴포넌트
// App.js
import Button from './components/Button';
function App() {
return (
<Button onClick={() => alert('submit')}>제출하기</Button>
<Button onClick={() => alert('delete')}>삭제하기</Button>
<Button onClick={() => alert('add')}>추가하기</Button>
);
}
export default App;
// Header.js
import React from 'react';
export default function Button(props){ // props 받기
return <button onClick={props.handleClick}>{props.children}</button>
}
props.children 활용법 #2
컴포넌트에 또 다른 컴포넌트를 전달해야 할 때 props.children 활용한다.
// App.js
import Welcome from './components/Welcome';
function App() {
return (
<Welcome>
<또 다른 사용자 정의 컴포넌트 />
</Welcome>
);
}
export default App;