[Core] - Store

강 진성·2024년 3월 25일
0

Jotai

목록 보기
4/5

createStore


이 기능은 새로운 빈 저장소를 만드는 것입니다. 저장소를 사용하여 Provider를 전달할 수 있습니다.

저장소에는 원자 값을 가져오기 위한 get, 원자 값 설정을 위한 set, 원자 변경 사항을 구독하기 위한 sub 등 세 가지 메서드가 있습니다


const myStore = createStore()

const countAtom = atom(0)
myStore.set(countAtom, 1)
const unsub = myStore.sub(countAtom, () => {
  console.log('countAtom value is changed to', myStore.get(countAtom))
})
// unsub() to unsubscribe

const Root = () => (
  <Provider store={myStore}>
    <App />
  </Provider>
)


getDefaultStore


이 함수는 공급자 없는 모드에서 사용되는 기본 저장소를 반환합니다.


const defaultStore = getDefaultStore()

getDefaultStore 함수는 Jotai에서 "provider-less mode"에서 사용되는 기본 스토어를 반환하는 함수입니다. 일반적으로 Jotai를 사용할 때는 <Provider> 컴포넌트를 통해 atom의 상태를 관리하는 스토어를 제공합니다. 그러나 모든 경우에 <Provider>를 사용하고 싶지 않거나 필요하지 않은 경우가 있을 수 있으며, 이때 "provider-less mode"가 유용할 수 있습니다.

getDefaultStore가 하는 일

  • 기본 스토어 제공
    getDefaultStore는 Jotai의 전역 상태 관리를 위한 기본 스토어를 제공합니다. 이 스토어는 애플리케이션 전체에서 사용할 수 있는 공통 상태를 관리하는 데 사용될 수 있습니다.

  • Provider-less mode 지원
    이 함수를 사용하면 <Provider> 없이 Jotai의 상태 관리 기능을 사용할 수 있습니다. 이는 간단한 애플리케이션 또는 특정 상황에서 스토어를 명시적으로 관리하고 싶을 때 유용합니다.


사용 방법

getDefaultStore 호출
우선 getDefaultStore 함수를 호출하여 기본 스토어 인스턴스를 가져옵니다.

import { getDefaultStore } from 'jotai';

const defaultStore = getDefaultStore();

스토어 사용
가져온 defaultStore를 사용하여 atom의 상태를 읽거나 업데이트할 수 있습니다. 그러나 주의할 점은, getDefaultStore로 얻은 스토어는 직접적으로 atom의 상태를 읽고 쓰는 API를 제공하지 않는다는 것입니다. 대신, 이 스토어는 내부적으로 Jotai에 의해 사용되며, 일반적인 Jotai 사용 방식과 동일하게 useAtom 또는 다른 Jotai 훅을 통해 atom과 상호작용합니다.

Provider-less mode에서 사용
getDefaultStore를 사용하는 주된 시나리오는 Provider-less mode입니다. 이 모드에서는 <Provider> 컴포넌트를 명시적으로 사용하지 않고, getDefaultStore로 얻은 기본 스토어가 Jotai의 상태 관리를 담당합니다. 이 방식은 설정이 간단하고, 소규모 애플리케이션 또는 특정 컴포넌트에서 Jotai를 사용하고자 할 때 유용할 수 있습니다.


예시

import { useAtom } from 'jotai';
import { countAtom } from './atoms';

function Counter() {
  const [count, setCount] = useAtom(countAtom);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(c => c + 1)}>Increment</button>
    </div>
  );
}

이 예시에서 Counter 컴포넌트는 countAtom을 사용합니다. getDefaultStore를 사용하는 경우, 특별한 설정 없이 useAtom을 사용하여 atom과 상호작용할 수 있으며, 이는 내부적으로 getDefaultStore에 의해 제공된 기본 스토어를 사용합니다.

getDefaultStore는 주로 내부적으로 사용되며, 일반적인 Jotai 애플리케이션 개발에서는 이 함수를 직접 사용할 일이 거의 없습니다. 대부분의 경우, Jotai는 <Provider> 없이도 잘 작동하며, 필요한 경우에만 명시적으로 <Provider>를 추가하여 스토어를 관리하게 됩니다.



참고 자료


https://jotai.org/docs/core/store

profile
완전완전완전초보초보초보

0개의 댓글