Skip to content

Commit 515fcb8

Browse files
committed
fix: Refcounts should maintain based on mount cycle
1 parent 12bb010 commit 515fcb8

File tree

5 files changed

+17
-14
lines changed

5 files changed

+17
-14
lines changed

packages/react/src/hooks/useCache.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type {
77
NI,
88
} from '@data-client/core';
99
import { ExpiryStatus } from '@data-client/core';
10-
import { useMemo } from 'react';
10+
import { useEffect, useMemo } from 'react';
1111

1212
import useCacheState from './useCacheState.js';
1313
import useController from '../hooks/useController.js';
@@ -39,7 +39,7 @@ export default function useCache<
3939
const meta = state.meta[key];
4040

4141
// Compute denormalized value
42-
const { data, expiryStatus, expiresAt } = useMemo(() => {
42+
const { data, expiryStatus, expiresAt, countRef } = useMemo(() => {
4343
return controller.getResponse(endpoint, ...args, state);
4444
// eslint-disable-next-line react-hooks/exhaustive-deps
4545
}, [
@@ -69,6 +69,9 @@ export default function useCache<
6969
const loading = expiryStatus !== ExpiryStatus.Valid && expired;
7070
/****************************************************************************************************/
7171

72+
// eslint-disable-next-line react-hooks/exhaustive-deps
73+
useEffect(countRef, [data]);
74+
7275
return useMemo(() => {
7376
// if useSuspense() would suspend, don't include entities from cache
7477
if (loading) {

packages/react/src/hooks/useDLE.native.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@ import type {
88
ResolveType,
99
} from '@data-client/core';
1010
import { ExpiryStatus } from '@data-client/core';
11-
import { useMemo } from 'react';
11+
import { useEffect, useMemo } from 'react';
1212
import { InteractionManager } from 'react-native';
1313

1414
import useCacheState from './useCacheState.js';
1515
import useController from './useController.js';
1616
import useFocusEffect from './useFocusEffect.native.js';
17-
import { useUniveralEffect } from './useUniversalEffect.js';
1817

1918
type SchemaReturn<S extends Schema | undefined> =
2019
| {
@@ -137,7 +136,8 @@ export default function useDLE<
137136

138137
const error = controller.getError(endpoint, ...args, state);
139138

140-
useUniveralEffect(countRef, [data]);
139+
// eslint-disable-next-line react-hooks/exhaustive-deps
140+
useEffect(countRef, [data]);
141141

142142
return {
143143
data,

packages/react/src/hooks/useDLE.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ import type {
88
ResolveType,
99
} from '@data-client/core';
1010
import { ExpiryStatus } from '@data-client/core';
11-
import { useMemo } from 'react';
11+
import { useEffect, useMemo } from 'react';
1212

1313
import useCacheState from './useCacheState.js';
1414
import useController from './useController.js';
15-
import { useUniveralEffect } from './useUniversalEffect.js';
1615

1716
type SchemaReturn<S extends Schema | undefined> =
1817
| {
@@ -124,7 +123,8 @@ export default function useDLE<
124123

125124
const error = controller.getError(endpoint, ...args, state);
126125

127-
useUniveralEffect(countRef, [data]);
126+
// eslint-disable-next-line react-hooks/exhaustive-deps
127+
useEffect(countRef, [data]);
128128

129129
return {
130130
data,

packages/react/src/hooks/useSuspense.native.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@ import type {
88
ResolveType,
99
NI,
1010
} from '@data-client/core';
11-
import { useMemo } from 'react';
11+
import { useEffect, useMemo } from 'react';
1212
import { InteractionManager } from 'react-native';
1313

1414
import useCacheState from './useCacheState.js';
1515
import useController from './useController.js';
1616
import useFocusEffect from './useFocusEffect.native.js';
17-
import { useUniveralEffect } from './useUniversalEffect.js';
1817

1918
/**
2019
* Ensure an endpoint is available.
@@ -113,7 +112,8 @@ export default function useSuspense<
113112
return () => task.cancel();
114113
}, []);
115114

116-
useUniveralEffect(countRef, [data]);
115+
// eslint-disable-next-line react-hooks/exhaustive-deps
116+
useEffect(countRef, [data]);
117117

118118
return data;
119119
}

packages/react/src/hooks/useSuspense.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import type {
77
DenormalizeNullable,
88
ResolveType,
99
} from '@data-client/core';
10-
import { useMemo } from 'react';
10+
import { useEffect, useMemo } from 'react';
1111

1212
import useCacheState from './useCacheState.js';
1313
import useController from './useController.js';
14-
import { useUniveralEffect } from './useUniversalEffect.js';
1514

1615
/**
1716
* Ensure an endpoint is available.
@@ -99,7 +98,8 @@ export default function useSuspense<
9998

10099
if (error) throw error;
101100

102-
useUniveralEffect(countRef, [data]);
101+
// eslint-disable-next-line react-hooks/exhaustive-deps
102+
useEffect(countRef, [data]);
103103

104104
return data;
105105
}

0 commit comments

Comments
 (0)