Skip to content

Commit 0aee13d

Browse files
authored
Merge pull request #27 from udecode/refactor/useAtomStore
refactor
2 parents b5ff55d + 754bffa commit 0aee13d

7 files changed

+28
-17
lines changed

.changeset/bright-coats-peel.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
'jotai-x': patch
33
---
44

5-
Add test cases and fix bugs
5+
Fix `deps` param

.changeset/polite-insects-occur.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'jotai-x': minor
3+
---
4+
5+
- Rename `useStoreValue` to `useAtomStoreValue`
6+
- Rename `useStoreSet` to `useAtomStoreSet`
7+
- Rename `useStoreState` to `useAtomStoreState`

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ An extension for [Jotai](https://github.com/pmndrs/jotai) that auto-generates ty
55
## Features
66

77
- Auto-generated type-safe hooks for each state field
8-
- Simple patterns: `useStoreValue('name')` and `useStoreSet('name', value)`
8+
- Simple patterns: `use<StoreName>Value(key)` and `use<StoreName>Set(key, value)`
99
- Extend your store with computed values using `extend`
1010
- Built-in support for hydration, synchronization, and scoped providers
1111

@@ -413,11 +413,13 @@ useUserValue('name');
413413

414414
```ts
415415
// Before
416+
const { useAppStore } = createAtomStore({ name: 'Alice' }, { name: 'app' });
416417
const name = useAppStore().get.name();
417418
const setName = useAppStore().set.name();
418419
const [name, setName] = useAppStore().use.name();
419420

420421
// Now
422+
const { useAppStore, useAppValue, useAppSet, useAppState } = createAtomStore({ name: 'Alice' }, { name: 'app' });
421423
const name = useAppValue('name');
422424
const setName = useAppSet('name');
423425
const [name, setName] = useAppState('name');

packages/jotai-x/README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ An extension for [Jotai](https://github.com/pmndrs/jotai) that auto-generates ty
55
## Features
66

77
- Auto-generated type-safe hooks for each state field
8-
- Simple patterns: `useStoreValue('name')` and `useStoreSet('name', value)`
8+
- Simple patterns: `use<StoreName>Value('name')` and `use<StoreName>Set('name', value)`
99
- Extend your store with computed values using `extend`
1010
- Built-in support for hydration, synchronization, and scoped providers
1111

@@ -413,11 +413,13 @@ useUserValue('name');
413413

414414
```ts
415415
// Before
416+
const { useAppStore } = createAtomStore({ name: 'Alice' }, { name: 'app' });
416417
const name = useAppStore().get.name();
417418
const setName = useAppStore().set.name();
418419
const [name, setName] = useAppStore().use.name();
419420

420421
// Now
422+
const { useAppStore, useAppValue, useAppSet, useAppState } = createAtomStore({ name: 'Alice' }, { name: 'app' });
421423
const name = useAppValue('name');
422424
const setName = useAppSet('name');
423425
const [name, setName] = useAppState('name');

packages/jotai-x/src/createAtomStore.spec.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import { splitAtom } from 'jotai/utils';
88

99
import {
1010
createAtomStore,
11+
useAtomStoreSet,
12+
useAtomStoreState,
13+
useAtomStoreValue,
1114
useStoreAtomValue,
12-
useStoreSet,
13-
useStoreState,
14-
useStoreValue,
1515
} from './createAtomStore';
1616

1717
describe('createAtomStore', () => {
@@ -487,7 +487,7 @@ describe('createAtomStore', () => {
487487
/* eslint-enable react-compiler/react-compiler */
488488
const store = useMyTestStoreStore();
489489
const becomeFriends0 = useMyTestStoreValue('becomeFriends');
490-
const becomeFriends1 = useStoreValue(store, 'becomeFriends');
490+
const becomeFriends1 = useAtomStoreValue(store, 'becomeFriends');
491491
const becomeFriends2 = useStoreAtomValue(
492492
store,
493493
myTestStoreStore.atom.becomeFriends
@@ -582,7 +582,7 @@ describe('createAtomStore', () => {
582582
/* eslint-enable react-compiler/react-compiler */
583583
const store = useMyTestStoreStore();
584584
const setName = useMyTestStoreSet('name');
585-
const setBecomeFriends = useStoreSet(store, 'becomeFriends');
585+
const setBecomeFriends = useAtomStoreSet(store, 'becomeFriends');
586586
const [becameFriends, setBecameFriends] = React.useState(false);
587587

588588
return (
@@ -682,7 +682,7 @@ describe('createAtomStore', () => {
682682
/* eslint-enable react-compiler/react-compiler */
683683
const store = useMyTestStoreStore();
684684
const [name, setName] = useMyTestStoreState('name');
685-
const [, setBecomeFriends] = useStoreState(store, 'becomeFriends');
685+
const [, setBecomeFriends] = useAtomStoreState(store, 'becomeFriends');
686686
const [becameFriends, setBecameFriends] = React.useState(false);
687687

688688
return (

packages/jotai-x/src/createAtomStore.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -922,19 +922,19 @@ Please wrap them with useCallback or configure the deps array correctly.`
922922
} as any;
923923
};
924924

925-
export function useStoreValue<T, E, K extends keyof StoreAtoms<T, E>>(
925+
export function useAtomStoreValue<T, E, K extends keyof StoreAtoms<T, E>>(
926926
store: ReturnOfUseStoreApi<T, E>,
927927
key: K
928928
): StoreAtoms<T, E>[K] extends Atom<infer V> ? V : never;
929-
export function useStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
929+
export function useAtomStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
930930
store: ReturnOfUseStoreApi<T, E>,
931931
key: K,
932932
selector: StoreAtoms<T, E>[K] extends Atom<infer V>
933933
? (v: V, prevSelectorOutput?: S) => S
934934
: never,
935935
deps?: unknown[]
936936
): S;
937-
export function useStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
937+
export function useAtomStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
938938
store: ReturnOfUseStoreApi<T, E>,
939939
key: K,
940940
selector: StoreAtoms<T, E>[K] extends Atom<infer V>
@@ -943,7 +943,7 @@ export function useStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
943943
equalityFn: (prevSelectorOutput: S, selectorOutput: S) => boolean,
944944
deps?: unknown[]
945945
): S;
946-
export function useStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
946+
export function useAtomStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
947947
store: ReturnOfUseStoreApi<T, E>,
948948
key: K,
949949
selector?: StoreAtoms<T, E>[K] extends Atom<infer V>
@@ -955,14 +955,14 @@ export function useStoreValue<T, E, K extends keyof StoreAtoms<T, E>, S>(
955955
return store.useValue(key, selector, equalityFnOrDeps, deps);
956956
}
957957

958-
export function useStoreSet<T, E, K extends keyof StoreAtoms<T, E>>(
958+
export function useAtomStoreSet<T, E, K extends keyof StoreAtoms<T, E>>(
959959
store: ReturnOfUseStoreApi<T, E>,
960960
key: K
961961
) {
962962
return store.useSet(key);
963963
}
964964

965-
export function useStoreState<T, E, K extends keyof StoreAtoms<T, E>>(
965+
export function useAtomStoreState<T, E, K extends keyof StoreAtoms<T, E>>(
966966
store: ReturnOfUseStoreApi<T, E>,
967967
key: K
968968
) {

packages/jotai-x/src/elementAtom.spec.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import '@testing-library/jest-dom';
33
import React from 'react';
44
import { act, render } from '@testing-library/react';
55

6-
import { createAtomStore, useStoreValue } from './createAtomStore';
6+
import { createAtomStore, useAtomStoreValue } from './createAtomStore';
77

88
type TElement = any;
99

@@ -24,7 +24,7 @@ export const useElement = <T extends TElement = TElement>(
2424
pluginKey = SCOPE_ELEMENT
2525
): T => {
2626
const store = useElementStore(pluginKey);
27-
const value = useStoreValue(store, 'element');
27+
const value = useAtomStoreValue(store, 'element');
2828

2929
if (!value) {
3030
console.warn(

0 commit comments

Comments
 (0)