[crud] Remove useResourceEffect (#32206)
Removes useResourceEffect. --- [//]: # (BEGIN SAPLING FOOTER) Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/32206). * __->__ #32206 * #32205
lauren committed
Feb 11, 2025 at 14:19 UTC
a69b80d07e5d1bf363ed15d6209a55b35e0765c2
9 files changed
+1
-227
packages/react-debug-tools/src/ReactDebugHooks.js
-22
@@ -128,9 +128,6 @@ function getPrimitiveStackCache(): Map<string, Array<any>> {
128
129
Dispatcher.useId();
130
131
- if (typeof Dispatcher.useResourceEffect === 'function') {
132
- Dispatcher.useResourceEffect(() => ({}), []);
133
- }
131
if (typeof Dispatcher.useEffectEvent === 'function') {
132
Dispatcher.useEffectEvent((args: empty) => {});
133
}
@@ -741,24 +738,6 @@ function useHostTransitionStatus(): TransitionStatus {
738
return status;
739
}
740
744
-function useResourceEffect(
745
- create: () => {...} | void | null,
746
- createDeps: Array<mixed> | void | null,
747
- update: ((resource: {...} | void | null) => void) | void,
748
- updateDeps: Array<mixed> | void | null,
749
- destroy: ((resource: {...} | void | null) => void) | void,
750
-) {
751
- nextHook();
752
- hookLog.push({
753
- displayName: null,
754
- primitive: 'ResourceEffect',
755
- stackError: new Error(),
756
- value: create,
757
- debugInfo: null,
758
- dispatcherHookName: 'ResourceEffect',
759
- });
760
-}
761
-
741
function useEffectEvent<Args, F: (...Array<Args>) => mixed>(callback: F): F {
742
nextHook();
743
hookLog.push({
@@ -798,7 +777,6 @@ const Dispatcher: DispatcherType = {
777
useActionState,
778
useHostTransitionStatus,
779
useEffectEvent,
801
- useResourceEffect,
780
};
781
782
// create a proxy to throw a custom error
packages/react-reconciler/src/ReactFiberHooks.js
-158
@@ -3989,9 +3989,6 @@ export const ContextOnlyDispatcher: Dispatcher = {
3989
if (enableUseEffectEventHook) {
3990
(ContextOnlyDispatcher: Dispatcher).useEffectEvent = throwInvalidHookError;
3991
}
3992
-if (enableUseEffectCRUDOverload) {
3993
- (ContextOnlyDispatcher: Dispatcher).useResourceEffect = throwInvalidHookError;
3994
-}
3992
3993
const HooksDispatcherOnMount: Dispatcher = {
3994
readContext,
@@ -4022,9 +4019,6 @@ const HooksDispatcherOnMount: Dispatcher = {
4019
if (enableUseEffectEventHook) {
4020
(HooksDispatcherOnMount: Dispatcher).useEffectEvent = mountEvent;
4021
}
4025
-if (enableUseEffectCRUDOverload) {
4026
- (HooksDispatcherOnMount: Dispatcher).useResourceEffect = mountResourceEffect;
4027
-}
4022
4023
const HooksDispatcherOnUpdate: Dispatcher = {
4024
readContext,
@@ -4055,10 +4049,6 @@ const HooksDispatcherOnUpdate: Dispatcher = {
4049
if (enableUseEffectEventHook) {
4050
(HooksDispatcherOnUpdate: Dispatcher).useEffectEvent = updateEvent;
4051
}
4058
-if (enableUseEffectCRUDOverload) {
4059
- (HooksDispatcherOnUpdate: Dispatcher).useResourceEffect =
4060
- updateResourceEffect;
4061
-}
4052
4053
const HooksDispatcherOnRerender: Dispatcher = {
4054
readContext,
@@ -4089,10 +4079,6 @@ const HooksDispatcherOnRerender: Dispatcher = {
4079
if (enableUseEffectEventHook) {
4080
(HooksDispatcherOnRerender: Dispatcher).useEffectEvent = updateEvent;
4081
}
4092
-if (enableUseEffectCRUDOverload) {
4093
- (HooksDispatcherOnRerender: Dispatcher).useResourceEffect =
4094
- updateResourceEffect;
4095
-}
4082
4083
let HooksDispatcherOnMountInDEV: Dispatcher | null = null;
4084
let HooksDispatcherOnMountWithHookTypesInDEV: Dispatcher | null = null;
@@ -4310,27 +4296,6 @@ if (__DEV__) {
4296
return mountEvent(callback);
4297
};
4298
}
4313
- if (enableUseEffectCRUDOverload) {
4314
- (HooksDispatcherOnMountInDEV: Dispatcher).useResourceEffect =
4315
- function useResourceEffect(
4316
- create: () => {...} | void | null,
4317
- createDeps: Array<mixed> | void | null,
4318
- update: ((resource: {...} | void | null) => void) | void,
4319
- updateDeps: Array<mixed> | void | null,
4320
- destroy: ((resource: {...} | void | null) => void) | void,
4321
- ): void {
4322
- currentHookNameInDev = 'useResourceEffect';
4323
- mountHookTypesDev();
4324
- checkDepsAreNonEmptyArrayDev(updateDeps);
4325
- return mountResourceEffect(
4326
- create,
4327
- createDeps,
4328
- update,
4329
- updateDeps,
4330
- destroy,
4331
- );
4332
- };
4333
- }
4299
4300
HooksDispatcherOnMountWithHookTypesInDEV = {
4301
readContext<T>(context: ReactContext<T>): T {
@@ -4514,26 +4479,6 @@ if (__DEV__) {
4479
return mountEvent(callback);
4480
};
4481
}
4517
- if (enableUseEffectCRUDOverload) {
4518
- (HooksDispatcherOnMountWithHookTypesInDEV: Dispatcher).useResourceEffect =
4519
- function useResourceEffect(
4520
- create: () => {...} | void | null,
4521
- createDeps: Array<mixed> | void | null,
4522
- update: ((resource: {...} | void | null) => void) | void,
4523
- updateDeps: Array<mixed> | void | null,
4524
- destroy: ((resource: {...} | void | null) => void) | void,
4525
- ): void {
4526
- currentHookNameInDev = 'useResourceEffect';
4527
- updateHookTypesDev();
4528
- return mountResourceEffect(
4529
- create,
4530
- createDeps,
4531
- update,
4532
- updateDeps,
4533
- destroy,
4534
- );
4535
- };
4536
- }
4482
4483
HooksDispatcherOnUpdateInDEV = {
4484
readContext<T>(context: ReactContext<T>): T {
@@ -4717,26 +4662,6 @@ if (__DEV__) {
4662
return updateEvent(callback);
4663
};
4664
}
4720
- if (enableUseEffectCRUDOverload) {
4721
- (HooksDispatcherOnUpdateInDEV: Dispatcher).useResourceEffect =
4722
- function useResourceEffect(
4723
- create: () => {...} | void | null,
4724
- createDeps: Array<mixed> | void | null,
4725
- update: ((resource: {...} | void | null) => void) | void,
4726
- updateDeps: Array<mixed> | void | null,
4727
- destroy: ((resource: {...} | void | null) => void) | void,
4728
- ) {
4729
- currentHookNameInDev = 'useResourceEffect';
4730
- updateHookTypesDev();
4731
- return updateResourceEffect(
4732
- create,
4733
- createDeps,
4734
- update,
4735
- updateDeps,
4736
- destroy,
4737
- );
4738
- };
4739
- }
4665
4666
HooksDispatcherOnRerenderInDEV = {
4667
readContext<T>(context: ReactContext<T>): T {
@@ -4920,26 +4845,6 @@ if (__DEV__) {
4845
return updateEvent(callback);
4846
};
4847
}
4923
- if (enableUseEffectCRUDOverload) {
4924
- (HooksDispatcherOnRerenderInDEV: Dispatcher).useResourceEffect =
4925
- function useResourceEffect(
4926
- create: () => {...} | void | null,
4927
- createDeps: Array<mixed> | void | null,
4928
- update: ((resource: {...} | void | null) => void) | void,
4929
- updateDeps: Array<mixed> | void | null,
4930
- destroy: ((resource: {...} | void | null) => void) | void,
4931
- ) {
4932
- currentHookNameInDev = 'useResourceEffect';
4933
- updateHookTypesDev();
4934
- return updateResourceEffect(
4935
- create,
4936
- createDeps,
4937
- update,
4938
- updateDeps,
4939
- destroy,
4940
- );
4941
- };
4942
- }
4848
4849
InvalidNestedHooksDispatcherOnMountInDEV = {
4850
readContext<T>(context: ReactContext<T>): T {
@@ -5148,27 +5053,6 @@ if (__DEV__) {
5053
return mountEvent(callback);
5054
};
5055
}
5151
- if (enableUseEffectCRUDOverload) {
5152
- (InvalidNestedHooksDispatcherOnMountInDEV: Dispatcher).useResourceEffect =
5153
- function useResourceEffect(
5154
- create: () => {...} | void | null,
5155
- createDeps: Array<mixed> | void | null,
5156
- update: ((resource: {...} | void | null) => void) | void,
5157
- updateDeps: Array<mixed> | void | null,
5158
- destroy: ((resource: {...} | void | null) => void) | void,
5159
- ): void {
5160
- currentHookNameInDev = 'useResourceEffect';
5161
- warnInvalidHookAccess();
5162
- mountHookTypesDev();
5163
- return mountResourceEffect(
5164
- create,
5165
- createDeps,
5166
- update,
5167
- updateDeps,
5168
- destroy,
5169
- );
5170
- };
5171
- }
5056
5057
InvalidNestedHooksDispatcherOnUpdateInDEV = {
5058
readContext<T>(context: ReactContext<T>): T {
@@ -5377,27 +5261,6 @@ if (__DEV__) {
5261
return updateEvent(callback);
5262
};
5263
}
5380
- if (enableUseEffectCRUDOverload) {
5381
- (InvalidNestedHooksDispatcherOnUpdateInDEV: Dispatcher).useResourceEffect =
5382
- function useResourceEffect(
5383
- create: () => {...} | void | null,
5384
- createDeps: Array<mixed> | void | null,
5385
- update: ((resource: {...} | void | null) => void) | void,
5386
- updateDeps: Array<mixed> | void | null,
5387
- destroy: ((resource: {...} | void | null) => void) | void,
5388
- ) {
5389
- currentHookNameInDev = 'useResourceEffect';
5390
- warnInvalidHookAccess();
5391
- updateHookTypesDev();
5392
- return updateResourceEffect(
5393
- create,
5394
- createDeps,
5395
- update,
5396
- updateDeps,
5397
- destroy,
5398
- );
5399
- };
5400
- }
5264
5265
InvalidNestedHooksDispatcherOnRerenderInDEV = {
5266
readContext<T>(context: ReactContext<T>): T {
@@ -5606,25 +5469,4 @@ if (__DEV__) {
5469
return updateEvent(callback);
5470
};
5471
}
5609
- if (enableUseEffectCRUDOverload) {
5610
- (InvalidNestedHooksDispatcherOnRerenderInDEV: Dispatcher).useResourceEffect =
5611
- function useResourceEffect(
5612
- create: () => {...} | void | null,
5613
- createDeps: Array<mixed> | void | null,
5614
- update: ((resource: {...} | void | null) => void) | void,
5615
- updateDeps: Array<mixed> | void | null,
5616
- destroy: ((resource: {...} | void | null) => void) | void,
5617
- ) {
5618
- currentHookNameInDev = 'useResourceEffect';
5619
- warnInvalidHookAccess();
5620
- updateHookTypesDev();
5621
- return updateResourceEffect(
5622
- create,
5623
- createDeps,
5624
- update,
5625
- updateDeps,
5626
- destroy,
5627
- );
5628
- };
5629
- }
5472
}
packages/react-reconciler/src/ReactInternalTypes.js
-9
@@ -47,7 +47,6 @@ export type HookType =
47
| 'useRef'
48
| 'useEffect'
49
| 'useEffectEvent'
50
- | 'useResourceEffect'
50
| 'useInsertionEffect'
51
| 'useLayoutEffect'
52
| 'useCallback'
@@ -399,14 +398,6 @@ export type Dispatcher = {
398
): void,
399
// TODO: Non-nullable once `enableUseEffectEventHook` is on everywhere.
400
useEffectEvent?: <Args, F: (...Array<Args>) => mixed>(callback: F) => F,
402
- // TODO: Non-nullable once `enableUseEffectCRUDOverload` is on everywhere.
403
- useResourceEffect?: (
404
- create: () => {...} | void | null,
405
- createDeps: Array<mixed> | void | null,
406
- update: ((resource: {...} | void | null) => void) | void,
407
- updateDeps: Array<mixed> | void | null,
408
- destroy: ((resource: {...} | void | null) => void) | void,
409
- ) => void,
401
useInsertionEffect(
402
create: () => (() => void) | void,
403
deps: Array<mixed> | void | null,
packages/react-server/src/ReactFizzHooks.js
+1
-9
@@ -38,10 +38,7 @@ import {
38
} from './ReactFizzConfig';
39
import {createFastHash} from './ReactServerStreamConfig';
40
41
-import {
42
- enableUseEffectEventHook,
43
- enableUseEffectCRUDOverload,
44
-} from 'shared/ReactFeatureFlags';
41
+import {enableUseEffectEventHook} from 'shared/ReactFeatureFlags';
42
import is from 'shared/objectIs';
43
import {
44
REACT_CONTEXT_TYPE,
@@ -866,11 +863,6 @@ export const HooksDispatcher: Dispatcher = supportsClientAPIs
863
if (enableUseEffectEventHook) {
864
HooksDispatcher.useEffectEvent = useEffectEvent;
865
}
869
-if (enableUseEffectCRUDOverload) {
870
- HooksDispatcher.useResourceEffect = supportsClientAPIs
871
- ? noop
872
- : clientHookNotSupported;
873
-}
866
867
export let currentResumableState: null | ResumableState = (null: any);
868
export function setCurrentResumableState(
packages/react/index.development.js
-1
@@ -59,7 +59,6 @@ export {
59
useDeferredValue,
60
useEffect,
61
experimental_useEffectEvent,
62
- experimental_useResourceEffect,
62
useImperativeHandle,
63
useInsertionEffect,
64
useLayoutEffect,
packages/react/index.experimental.development.js
-1
@@ -42,7 +42,6 @@ export {
42
useDeferredValue,
43
useEffect,
44
experimental_useEffectEvent,
45
- experimental_useResourceEffect,
45
useImperativeHandle,
46
useInsertionEffect,
47
useLayoutEffect,
packages/react/index.fb.js
-1
@@ -21,7 +21,6 @@ export {
21
createElement,
22
createRef,
23
experimental_useEffectEvent,
24
- experimental_useResourceEffect,
24
forwardRef,
25
Fragment,
26
isValidElement,
packages/react/src/ReactClient.js
-5
@@ -41,7 +41,6 @@ import {
41
useContext,
42
useEffect,
43
useEffectEvent,
44
- useResourceEffect,
44
useImperativeHandle,
45
useDebugValue,
46
useInsertionEffect,
@@ -65,7 +64,6 @@ import {addTransitionType} from './ReactTransitionType';
64
import {act} from './ReactAct';
65
import {captureOwnerStack} from './ReactOwnerStack';
66
import * as ReactCompilerRuntime from './ReactCompilerRuntime';
68
-import {enableUseEffectCRUDOverload} from 'shared/ReactFeatureFlags';
67
68
const Children = {
69
map,
@@ -132,6 +130,3 @@ export {
130
act, // DEV-only
131
captureOwnerStack, // DEV-only
132
};
135
-
136
-export const experimental_useResourceEffect: typeof useResourceEffect | void =
137
- enableUseEffectCRUDOverload ? useResourceEffect : undefined;
packages/react/src/ReactHooks.js
-21
@@ -221,27 +221,6 @@ export function useEffectEvent<Args, F: (...Array<Args>) => mixed>(
221
return dispatcher.useEffectEvent(callback);
222
}
223
224
-export function useResourceEffect(
225
- create: () => {...} | void | null,
226
- createDeps: Array<mixed> | void | null,
227
- update: ((resource: {...} | void | null) => void) | void,
228
- updateDeps: Array<mixed> | void | null,
229
- destroy: ((resource: {...} | void | null) => void) | void,
230
-): void {
231
- if (!enableUseEffectCRUDOverload) {
232
- throw new Error('Not implemented.');
233
- }
234
- const dispatcher = resolveDispatcher();
235
- // $FlowFixMe[not-a-function] This is unstable, thus optional
236
- return dispatcher.useResourceEffect(
237
- create,
238
- createDeps,
239
- update,
240
- updateDeps,
241
- destroy,
242
- );
243
-}
244
-
224
export function useOptimistic<S, A>(
225
passthrough: S,
226
reducer: ?(S, A) => S,