/* 정보 전달 목적의 글 보다는 공부하면서 기억하기 위해 적는 글입니다.
따라서 깊이가 얕으며, 잘못된 정보가 있을 수 있습니다. */
useState();
const [count, setCount] = useState(0);
useState() : 함수형 컴포넌트에서도 state를 관리하기 위함.
인자는 state의 초깃값이 들어가며 반드시 객체가 아니어도 된다.
useState()를 호출하면, 배열이 반환된다.
첫 번째 원소는 count라는 state이고, 두 번재 원소는 count를 바꾸어주는 함수(setter 함수)이다.
++ 원래 배열에 있는 값들을 추출하려면
const array = [1, 2];
const one = array[0];
const two = array[1];
const [one,two] = array;
이래야 됐지만, 배열 비구조화 할당을 사용하면 []을 통해 가능하다.
(+ 객체 비구조화 할당은 {} 이다.)
useState() 사용 예제
import React, { useState } from "react";
const MyComponent = () => {
const [text, setText] = useState();
const onChange = e => {
setText(e.target.value);
}
return (
<div>
<input type="text" name="username" value={text} onChange={onChange}></input>
</div >
);
}
export default MyComponent;
그냥 [상태, setter함수] = useState()하면 된다.
state를 설정하고 싶으면 그냥 setter함수의 인자를 원하는 값을 넣은 다음 호출하면된다.
위의 예제를 클래스형 컴포넌트로 바꿔보자면, 다음과 같다.
import React from "react";
class MyComponent extends React.Component {
state = {
text: '',
}
onChange = (e) => {
this.setState({ text: e.target.value });
}
render() {
const { text } = this.state;
return (
<div className="App">
<input type="text" value={text} onChange={this.onChange}></input>
</div>
)
}
}
export default MyComponent;
클래스 컴포넌트의 state를 함수형 컴포넌트에서 사용하기 위한 Hook임을 까먹지 말자.
useState()의 특징
- 하나의 useState 함수는 하나의 상태 값만 관리할 수 있다.
따라서 컴포넌트에서 관리해야 할 상태가 여러 개라면 useState를 여러번 사용하면 된다.
- 클래스 컴포넌트에서의 state와는 달리 여기서의 state는 객체도 되고, 숫자도 되고 다 된다.
const [form, setForm] = useState({
username: '',
message: '',
});
// 가능
const [number, setNumber] = useState(0);
// 가능
결론
이제는 함수형 컴포넌트로 메타가 바뀌었고, state를 쓰기 위해서는 useState를 사용해야한다.클래스형 컴포넌트에서 사용했던 setState와 헷갈리지 말자.
'NewLearn > React' 카테고리의 다른 글
[React] map, filter를 이용한 예제 (0) | 2021.05.03 |
---|---|
[React] ref (0) | 2021.05.02 |
[React] 함수형 컴포넌트에서의 이벤트 핸들링* (0) | 2021.05.02 |
[React] 클래스 컴포넌트에서의 이벤트 핸들링 (0) | 2021.05.01 |
[React] setState()는 함수 인자를 전달해야한다. (1) | 2021.05.01 |