1. props
- props는 첫번째이자 유일하게 전달받는 인자이다.
- props는 컴포넌트에 붙여준 모든 값을 보관하는 object이다.
- 같은 컴포넌트를 UI를 다르게 만들어서 사용할 수 있다. (재사용성)
- object이므로 여러개의 prop을 전달해줄 수 있고 각각 받아서 사용할수 있다.
- 전달하는 props와 전달받은 props의 이름은 같아야 한다.
- string, number, function 까지 props로 모든것을 컴포넌트로 넘겨줄수 있다.
: {first, second, last} (ES6)
function Btn(props){ // props는 전달받은 것들을 전부 포함하는 object이다.
return ( // {text} 와 같이 바로 받은 것을 argument로 받을수 있다.
<button
style={{
backgroundColor:"#1AAB8A",
color:"#fff",
border:"none",
height:"60px",
fontSize:"1.6em",
padding:"0 2em",
cursor:"pointer",
outline:"none",
}}
>
{props.text} // {text} 로 가능
</button>
);
}
function App(){
return (
<div>
<Btn text="Go"/> // props object에 속성 추가
<Btn text="Leave"/> // props object에 속성 추가
</div>
);
}
2. React memo
- 부모 컴포넌트의 state가 바뀌면 모든 자식 컴포넌트들은 re-render 된다.
- 컴포넌트의 props가 바뀌면 re-render가 일어난다.
- 이때 React memo 활용한다면 해당 컴포넌트의 props가 바뀌지 않는 이상 re-render가 일어나는 것을 방지해준다.(부모 컴포넌트의 변화가 모든 자식 컴포넌트에 영향을 끼치지 않음)
- 만약 부모 컴포넌트에 100개의 자식 컴포넌트가 달려있다면... 앱의 효율성을 위해서 react memo가 꼭 필요할것이다.
const MemorizedBtn = React.memo(Btn);
function App(){
const [value, setValue] = React.useState("Go");
const [joon, setT] = React.useState(true);
console.log(joon);
console.log(value);
const changeValue = () =>
{
setValue(joon ? "Oh yeah":"Go");
setT(!joon);
};
return (
<div>
<MemorizedBtn text={value} changeValue={changeValue}/>
<MemorizedBtn text="Leave"/>
</div>
);
}
3. onClick에 여러 함수 넣기
- 두 개 이상의 state를 한개의 함수에서 동시에 변화 하고 싶었다.
- arrow function 어렵다...
const [value, setValue] = React.useState("Go");
const [joon, setT] = React.useState(true);
const changeValue = () =>
{
setValue(joon ? "Oh yeah":"Go");
setT(!joon);
};
React onClick에 여러 함수를 넣고 싶다면
처음에 많이 당황스러웠던 에러는 onClick에 함수를 넣었을 때였다. 기본적이지만 함수 하나일 때와 여럿일 때의 차이는 ()=>{} 유무. 실수로 놓칠 때도 있었고 알고나서도 꽤 많은 에러가 여기서
bolob.tistory.com
4. PropsType
- props의 type을 미리 지정하여 잘못된 prop이 전달받는걸 방지해준다.
- 사실상 props의 type을 잘못 전달받아도 React는 그것이 잘못된 것인지 모른다. (따라서 우리가 알려주자!)
- props : type 형태
- 필수적인 prop인 경우 .isRequired를 붙여준다.
- import 필요함
- 대소문자 주의...
https://www.npmjs.com/package/prop-types
prop-types
Runtime type checking for React props and similar objects.
www.npmjs.com
Btn.propTypes = {
text: PropTypes.string.isRequired,
fontSize: PropTypes.number,
};
'React' 카테고리의 다른 글
[React] 4. Router (0) | 2022.01.29 |
---|---|
[React] 1. Create React App (0) | 2022.01.26 |
[리엑트] 정리 4 (0) | 2022.01.24 |
[리액트] 정리 3 (0) | 2022.01.23 |
[리액트] 정리 2 (0) | 2022.01.23 |