Skip to content

Commit 01886da

Browse files
fix: update useSharedState and useSharedStateSelector to accept string keys for improved flexibility
1 parent 8f96c27 commit 01886da

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/hooks/use-shared-state.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ export const createSharedState = <T>(initialValue: T, scopeName?: Prefix): Share
1616
return sharedStatesManager.createStatic({initialValue}, initialValue, scopeName);
1717
}
1818

19-
export function useSharedState<T, S extends string>(key: S, initialValue: T, scopeName?: Prefix): readonly [T, (v: T | ((prev: T) => T)) => void];
19+
export function useSharedState<T>(key: string, initialValue: T, scopeName?: Prefix): readonly [T, (v: T | ((prev: T) => T)) => void];
2020
export function useSharedState<T>(sharedStateCreated: SharedStateCreated<T>): readonly [T, (v: T | ((prev: T) => T)) => void];
21-
export function useSharedState<T, S extends string>(
22-
key: S | SharedStateCreated<T>,
21+
export function useSharedState<T>(
22+
key: string | SharedStateCreated<T>,
2323
initialValue?: T,
2424
scopeName?: Prefix
2525
): readonly [T, (v: T | ((prev: T) => T)) => void] {
@@ -72,10 +72,10 @@ export function useSharedState<T, S extends string>(
7272

7373
export type SharedStateSelector<S,T = S> = (original: S) => T
7474

75-
export function useSharedStateSelector<T, S extends string, R>(key: S, selector: SharedStateSelector<T, R>, scopeName?: Prefix): Readonly<R>;
75+
export function useSharedStateSelector<T, R = T>(key: string, selector: SharedStateSelector<T, R>, scopeName?: Prefix): Readonly<R>;
7676
export function useSharedStateSelector<T, R>(sharedStateCreated: SharedStateCreated<T>, selector: SharedStateSelector<T, R>): Readonly<R>;
77-
export function useSharedStateSelector<T, S extends string, R>(
78-
key: S | SharedStateCreated<T>,
77+
export function useSharedStateSelector<T, R = T>(
78+
key: string | SharedStateCreated<T>,
7979
selector: SharedStateSelector<T, R>,
8080
scopeName?: Prefix
8181
): Readonly<R> {
@@ -95,6 +95,7 @@ export function useSharedStateSelector<T, S extends string, R>(
9595
const cache = useRef<R | undefined>(undefined);
9696

9797
const externalStoreSubscriber = useMemo<Parameters<typeof useSyncExternalStore>[0]>(() => (listener) => {
98+
sharedStatesManager.init(keyStr, prefix, undefined);
9899
sharedStatesManager.addListener(keyStr, prefix, listener);
99100

100101
return () => {

0 commit comments

Comments
 (0)