react
[React] useState 정리
yjenis
2024. 6. 12. 11:30

🗯️ 공식 문서
const [state, setState] = useState(initialState)
매개변수
- initialState:
- state의 초기 설정값입니다.
- 어떤 유형의 값이든 지정할 수 있지만 함수에 대해서는 특별한 동작이 있습니다.
- 이 인수는 초기 렌더링 이후에는 무시됩니다.
- 함수를 initialState로 전달하면 이를 초기화 함수로 취급합니다.
- 이 함수는 순수해야 하고 인수를 받지 않아야 하며 반드시 어떤 값을 반환해야 합니다.
- React는 컴포넌트를 초기화할 때 초기화 함수를 호출하고, 그 반환값을 초기 state로 저장합니다.
반환값
- useState는 정확히 두 개의 값을 가진 배열을 반환합니다.
- 현재 state입니다.
- 첫 번째 렌더링 중에는 전달한 initialState와 일치합니다.
- 상호작용에 반응하여 state를 다른 값으로 변경하고 리렌더링을 촉발할 수 있는 set 함수입니다.
💗 useState가 반환하는 set 함수를 사용하면 state를 다른 값으로 업데이트하고 리렌더링을 촉발할 수 있습니다. 여기에는 다음 state를 직접 전달하거나, 이전 state로부터 계산한 함수를 전달할 수도 있습니다.
주의!
set 함수를 호출해도 이미 실행 중인 코드의 현재 state는 변경되지 않습니다.
function handleClick() {
setName('Robin');
console.log(name); // 아직 "Taylor"입니다!
}
set함수는 다음 렌더링에서 반환할 useState에만 영향을 줍니다.
🐊 참고 코드
총정리
1. useState를 import 한다
import { useState } from 'react';
2. useState를 작성한다.
const[반환값1, 반환값2**(set 함수)**]= useState(초기값)
3. 이제 set함수를 활용해보자
const onClick=()=>{
set함수(활용할 식)
}
4. return 영역에서 활용
return (
<button onClick={onClick}>
{반환값1}
</button>
)
*반환값2(set함수)가 돌아가면 거기에 따라 반환값1 리렌더링
const [name, setName] = useState('Edward');
const [age, setAge] = useState(28);
function handleClick() {
setName('Taylor');
setAge(a => a + 1);
// ...
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
return (
<button onClick={handleClick}>
You pressed me {count} times
</button>
);
}
function App(){
// const는 불변 let은 가변
// useState()활용할 때,
// 첫번째 원소는 현재상태이고 두번째 원소는 해당 변수명을 갖는 함수
let [counter,modifier]=React.useState(0);
const onClick = () => {
// 함수 괄호에 뭐 만들건지 쓰기만 하면 됨
modifier(counter+1)
};
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={onClick} >Click me</button>
</div>
);
}
// root라는 id를 가진 div 요소에 React 컴포넌트를 렌더링
ReactDOM.render(<App/>, root);
function App(){
const[showing, setShowing] = useState(false);
const onClick=()=> setShowing(prev=>!prev);
return (
<div>
{showing ? <Hello /> : null}
<button onClick={onClick}>{showing ? "Hide" : "show"}</button>
</div>
)
}