Atoms
Atoms
는 상태의 단위이며, 업데이트와 구독이 가능.atom
이 업데이트되면 각각의 구독된 컴포넌트는 새로운 값을 반영해 재렌더링된다.atoms
는 런타임에서 생성될 수도 있다. Atoms
는 리액트의 로컬 컴포넌트의 상태 대신 사용할 수 있다.
동일한 atom
이 여러 컴포넌트에서 사용되는 경우 모든 컴포넌트는 상태를 공유한다.
const fontSizeState = atom({
key: 'fontSizeState',
default: 14,
})
Atoms
는 디버깅, 지속성 및 모든 atoms
의 map을 볼 수 있는 특정 고급 API에 사용되는 고유한 키가 필요하다.
두개의 atom
이 같은 키를 갖는 것은 오류이기 때문에 키 값은 전역적으로 고유하도록 해야한다.
리액트 컴포넌트의 상태처럼 기본값도 가진다.
useRecoilState
컴포넌트에서 atom
을 읽고 쓰려면 useRecoilState
라는 훅을 사용한다.
리액트의 useState
와 비슷하지만 상태가 컴포넌트간에 공유될 수 있다는 차이가 있다.
function FontButton() {
const [fontSize, setFontSize] = useRecoilState(fontSizeState);
return (
<button onClick={()=>setFontSize((size)=>size + 1)} style={{fontSize}}>
Click to Enlarge
</button>
)
}
버튼을 클릭하면 버튼의 글꼴 크기가 1만큼 증가하며, fontSizeState atom을 사용하는 다른 컴포넌트의 글꼴 크기도 같이 변화한다.
funtion Text(){
const [fontSize, setFontSize] = useRecoilState(fontSizeState);
return <p style={{fontSize}}>This text will increase in size too.</p>
}
'coding > react' 카테고리의 다른 글
리코일, Selectors (0) | 2023.03.30 |
---|---|
버튼 애니메이션 1 with styled-component (0) | 2022.05.20 |
async-await function in useEffect (0) | 2022.02.22 |
Next.js에서 백그라운드 이미지 적용해서 애니메이션 주기 (0) | 2021.11.17 |
zustand 사용하기 🚀 (0) | 2021.11.09 |
댓글