Provider-less (mặc định): Jotai dùng global WeakMap store — mọi component trong app share cùng atom values mà không cần wrap Provider.
Khi nào cần Provider:
- Testing —
<Provider store={createStore()}>tạo isolated store mỗi test, tránh state leak giữa tests; - Micro-frontend — mỗi app widget có store riêng;
- Reset toàn bộ atoms khi component unmount (ví dụ modal dialog)
Store API: const myStore = createStore(); myStore.get(atom); myStore.set(atom, value); myStore.sub(atom, callback) — dùng để interact với atoms ngoài React (WebSocket handlers, analytics).
Tradeoff: Provider-less tiện nhưng dễ gây test pollution nếu không reset; with-Provider an toàn hơn cho testing nhưng cần boilerplate. <Provider store={store}> cũng là cách implement DevTools hoặc persist toàn bộ store state.
Provider-less (default): Jotai uses a global WeakMap store — all components in the app share atom values without wrapping a Provider.
When you DO need a Provider:
- Testing —
<Provider store={createStore()}>creates an isolated store per test, preventing state leaking between tests; - Micro-frontends — each app widget has its own store;
- Resetting all atoms when a component unmounts (e.g., a modal dialog)
Store API: const myStore = createStore(); myStore.get(atom); myStore.set(atom, value); myStore.sub(atom, callback) — useful for interacting with atoms outside React (WebSocket handlers, analytics).
Trade-off: Provider-less is convenient but can cause test pollution if not reset; with-Provider is safer for testing but requires boilerplate. <Provider store={store}> is also the pattern for implementing DevTools or persisting the entire store state.