Front-end/React
[JUSTCODE] Basic Foundation - React useState, props
Hazel Han
2022. 10. 24. 19:45
Hooks
- Hook은 함수 컴포넌트에서 React state와 생명주기 기능(lifecycle features)을 연동(hook into) 할 수 있게 해주는 함수
- use로 시작되는 것들은 내장 Hook이다.
사용이유
- 컴포넌트 사이에서 상태와 관련된 로직을 재사용하기 위해
- 관심사의 분리를 위해
사용규칙
- 최상위에서만 Hook을 호출해야한다.
- React 함수 컴포넌트 내에서만 Hook을 호출해야한다.
State
컴포넌트 내부에 가지고 있는 컴포넌트의 상태값(화면에 보여줄 UI의 상태)
정의하는 법
import React, { useState } from 'react';
function State() {
const [color, setColor] = useState();
return (
<div>
<h1>Function Component | name</h1>
</div>
);
}
export default State;
import에서 React옆에 {useState}를 달아준다.
Event & state 변경
import React, { useState } from 'react';
function State() {
const [color, setColor] = useState('red');
return (
<div>
<h1 style={{ color: color }}>Function Component | State</h1>
<button onClick={() => setColor('blue')}>Click</button>
</div>
);
}
export default State;
useState=("초기값"); 이기 때문에 처음에는 빨간색이지만, 클릭 시 컬러를 파란색으로 바꾼다.
props
컴포넌트의 속성값으로 부모 컴포넌트에서 내려받은 데이터를 가진 객체이다.
정의하는 법
// Parent.js
import React, { useState } from 'react';
import Child from '../pages/Child/Child';
function Parent() {
const [color, setColor] = useState('red');
return (
<div>
<h1>Parent Component</h1>
<Child titleColor={color} contentColor={color} />
</div>
);
export default Parent;
// Child.js
import React from 'react';
function Child(props) {
// console.log(props);
// {
// titleColor: 'red',
// contentColor: 'red'
// }
return (
<div>
<h1 style={{color : props.titleColor}}>Child Component</h1>
</div>
);
}
export default Child;
Child 함수에서 props를 객체로 받아온다.
Parent 함수에서 props로 내려받은 color를 props.titleColor로 사용한다.
이 방법 외에도 구조분해할당을 이용하여, {color}객체만 가져오는 방법도 있다.
props & event
// Parent.js
import React, { useState } from 'react';
import Child from '../pages/Child/Child';
function Parent() {
const [color, setColor] = useState('red');
// const changeColor = () => setColor('blue');
function changeColor() {
setColor('blue');
}
return (
<div>
<h1>Parent Component</h1>
<Child titleColor={color} changeColor={changeColor} />
</div>
);
export default Parent;
// Child.js
import React from 'react';
function Child(props) {
return (
<div>
<h1 style={{color : props.titleColor}}>Child Component</h1>
<button onClick={props.changeColor}>Click</button>
</div>
);
}
export default Child;
parent 함수에 있는 changeColor 함수를 props로 가져온다.