이 기능은 새로운 빈 저장소를 만드는 것입니다. 저장소를 사용하여 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>
)
이 함수는 공급자 없는 모드에서 사용되는 기본 저장소를 반환합니다.
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>
를 추가하여 스토어를 관리하게 됩니다.