기본적으로 리액트는 컴포넌트 내부에서 상태를 관리하는 useState훅을 사용하는데, 컴포넌트 간에 상태를 공유할 때는 이 상태를 일일이 부모-자식 간으로 내려줄떄 props를 사용하는데, 이는 프로젝트가 커지면 굉장히 복잡해 질 수 있다.
이러한 번거로움을 줄이기 위해 나온게 Recoil이다.
Atom이라고 부른다. // atoms.js
import { atom } from 'recoil';
export const userNameState = atom({
key: 'userNameState', // 각 아톰을 구분하는 고유한 키값
default: '', // 초기값
});
읽을 때 사용설정(변경)할 때 사용import { useRecoilValue } from 'recoil';
import { userNameState } from './atoms';
function DisplayUserName() {
const userName = useRecoilValue(userNameState); // 아톰 값 읽기
return <div>현재 로그인한 사용자: {userName}</div>;
}
useRecoilValue 사용import { useSetRecoilState } from 'recoil';
import { userNameState } from './atoms';
function SetUserName() {
const setUserName = useSetRecoilState(userNameState); // 아톰 값 변경
const handleChange = (event) => {
setUserName(event.target.value); // 아톰 값 업데이트
};
return (
<input
type="text"
placeholder="이름 입력"
onChange={handleChange}
/>
);
}
useSetRecoilState 사용리액트 useState와 Props만 주구장창 배우다가 좀 더 끈기를 가지고 공부하다보니
이런 새로운 신개념도 알게되었다!!
점점 더 코드가 줄어가고 있다. 그만큼 축약된것이니 개념정리를 더 잘해두고 꾸준히 읽어봐야겠다.