컴포넌트에 데이터를 전달하는 방법
{}
을 사용하여 데이터를 지정 합니다.{}
를 이용하거나 문자열로 전달하여야 합니다mport './App.css';
import MyHeader from './my_header';
import Counter from './count';
function App() {
return (
<div className="App">
<MyHeader />
<Counter initialValue={5} /> // 5라는 값을 전달 합니다.
</div>
);
}
export default App;
import React, { useState } from 'react';
const Counter = (props) => { // 매개변수로 props 를 받습니다.
const [count, setCount] = useState(props.initialValue);
const onIncrease = () => {
setCount(count + 1); // 0 + 1
};
const onDecrease = () => {
setCount(count - 1);
};
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
<button onClick={onDecrease}>-</button>
</div>
);
};
export default Counter;
<Counter initialValue={5}, a={1}, b={2}, c={3} />
Spread
연산자 방식으로 전달 할 수 있습니다.import './App.css';
import MyHeader from './my_header';
import Counter from './count';
function App() {
const counterProps = {
a: 1,
b: 2,
c: 3,
initialValue: 5,
};
return (
<div className="App">
<MyHeader />
<Counter {...counterProps} />
</div>
);
}
export default App;
const Counter = ({ initialValue }) => { // props의 값 중에서 initialValue만 가져왔다.
const [count, setCount] = useState(initialValue);
undefined
로 전달 되어지는 버그를 마주 할 수 있습니다..defalutProps
를 활용 합니다.import React, { useState } from 'react';
const Counter = ({ initialValue }) => {
console.log(initialValue);
const [count, setCount] = useState(initialValue);
const onIncrease = () => {
setCount(count + 1); // 0 + 1
};
const onDecrease = () => {
setCount(count - 1);
};
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
<button onClick={onDecrease}>-</button>
</div>
);
};
Counter.defaultProps = {
initialValue = 0;
}
export default Counter;
App.js
에서 내려준 적이 없으나, defaultProps
에 의해서 0 으로 고정 됩니다.props
의 기본 값을 설정해서 에러를 방지 할 수 있습니다.props
로 전달을 하겠습니다.const Container = ({children) => {
return (
<div style={{ margin: 20, padding: 20, border: '1px solid gray' }}>
{children}
</div>
);
};
export default Container;
children
이라느 props 를 받습니다.import './App.css';
import MyHeader from './my_header';
import Counter from './count';
import Container from './Container';
function App() {
const counterProps = {
a: 1,
b: 2,
c: 3,
initialValue: 5,
};
return (
<Container> // 추가
<div className="App"> // </div> 까지 children 에 전달
<MyHeader />
<Counter {...counterProps} />
</div>
</Container>
);
}
export default App;
Container
의 자식으로 배치된 요소들은 Container
의 children
props 으로 전달이 됩니다.