Skip to content

Commit 61805ce

Browse files
committed
Support ref cleanup function for imperative handle refs (#28910)
Support ref cleanup function for imperative handle refs DiffTrain build for commit ed71a3a.
1 parent fd57a33 commit 61805ce

10 files changed

Lines changed: 88 additions & 79 deletions

File tree

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-dev.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<901259dbb520cffda8ebd0f1c24b61d7>>
10+
* @generated SignedSource<<52b4dbf4e18cc25f133cd7e575c1b6cd>>
1111
*/
1212

1313
'use strict';
@@ -8548,9 +8548,14 @@ function imperativeHandleEffect(create, ref) {
85488548
if (typeof ref === 'function') {
85498549
var refCallback = ref;
85508550
var inst = create();
8551-
refCallback(inst);
8551+
var refCleanup = refCallback(inst);
85528552
return function () {
8553-
refCallback(null);
8553+
if (typeof refCleanup === 'function') {
8554+
// $FlowFixMe[incompatible-use] we need to assume no parameters
8555+
refCleanup();
8556+
} else {
8557+
refCallback(null);
8558+
}
85548559
};
85558560
} else if (ref !== null && ref !== undefined) {
85568561
var refObject = ref;
@@ -22983,7 +22988,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
2298322988
return root;
2298422989
}
2298522990

22986-
var ReactVersion = '19.0.0-canary-5e828dec';
22991+
var ReactVersion = '19.0.0-canary-8f31b884';
2298722992

2298822993
/*
2298922994
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-prod.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<c6fc72b49d174b33d4572246c49e569a>>
10+
* @generated SignedSource<<bbd5884892e3e7b30fece4b277837a1e>>
1111
*/
1212

1313
"use strict";
@@ -2824,14 +2824,13 @@ function updateLayoutEffect(create, deps) {
28242824
return updateEffectImpl(4, 4, create, deps);
28252825
}
28262826
function imperativeHandleEffect(create, ref) {
2827-
if ("function" === typeof ref)
2828-
return (
2829-
(create = create()),
2830-
ref(create),
2831-
function () {
2832-
ref(null);
2833-
}
2834-
);
2827+
if ("function" === typeof ref) {
2828+
create = create();
2829+
var refCleanup = ref(create);
2830+
return function () {
2831+
"function" === typeof refCleanup ? refCleanup() : ref(null);
2832+
};
2833+
}
28352834
if (null !== ref && void 0 !== ref)
28362835
return (
28372836
(create = create()),
@@ -9152,7 +9151,7 @@ var devToolsConfig$jscomp$inline_1028 = {
91529151
throw Error("TestRenderer does not support findFiberByHostInstance()");
91539152
},
91549153
bundleType: 0,
9155-
version: "19.0.0-canary-e1a9c38c",
9154+
version: "19.0.0-canary-23c765d3",
91569155
rendererPackageName: "react-test-renderer"
91579156
};
91589157
var internals$jscomp$inline_1247 = {
@@ -9183,7 +9182,7 @@ var internals$jscomp$inline_1247 = {
91839182
scheduleRoot: null,
91849183
setRefreshHandler: null,
91859184
getCurrentFiber: null,
9186-
reconcilerVersion: "19.0.0-canary-e1a9c38c"
9185+
reconcilerVersion: "19.0.0-canary-23c765d3"
91879186
};
91889187
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
91899188
var hook$jscomp$inline_1248 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react-test-renderer/cjs/ReactTestRenderer-profiling.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<d056995ed197f2bb9dea5e09fe3f5123>>
10+
* @generated SignedSource<<cda6f05cc9137320b9b41d8810504f84>>
1111
*/
1212

1313
"use strict";
@@ -2912,14 +2912,13 @@ function updateLayoutEffect(create, deps) {
29122912
return updateEffectImpl(4, 4, create, deps);
29132913
}
29142914
function imperativeHandleEffect(create, ref) {
2915-
if ("function" === typeof ref)
2916-
return (
2917-
(create = create()),
2918-
ref(create),
2919-
function () {
2920-
ref(null);
2921-
}
2922-
);
2915+
if ("function" === typeof ref) {
2916+
create = create();
2917+
var refCleanup = ref(create);
2918+
return function () {
2919+
"function" === typeof refCleanup ? refCleanup() : ref(null);
2920+
};
2921+
}
29232922
if (null !== ref && void 0 !== ref)
29242923
return (
29252924
(create = create()),
@@ -9768,7 +9767,7 @@ var devToolsConfig$jscomp$inline_1110 = {
97689767
throw Error("TestRenderer does not support findFiberByHostInstance()");
97699768
},
97709769
bundleType: 0,
9771-
version: "19.0.0-canary-71d4d884",
9770+
version: "19.0.0-canary-a8cb0ecc",
97729771
rendererPackageName: "react-test-renderer"
97739772
};
97749773
(function (internals) {
@@ -9812,7 +9811,7 @@ var devToolsConfig$jscomp$inline_1110 = {
98129811
scheduleRoot: null,
98139812
setRefreshHandler: null,
98149813
getCurrentFiber: null,
9815-
reconcilerVersion: "19.0.0-canary-71d4d884"
9814+
reconcilerVersion: "19.0.0-canary-a8cb0ecc"
98169815
});
98179816
exports._Scheduler = Scheduler;
98189817
exports.act = act;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
cb151849e13f46ec64570519cb93d5939fb60cab
1+
ed71a3ad2965617c27c6e7ca7577f15b8ca4152c

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-dev.fb.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<e23105fe3f0439fc7cd9d5143f2ae9f4>>
10+
* @generated SignedSource<<a0b071a4d2d0e560cdb146b2f45c1c18>>
1111
*/
1212

1313
'use strict';
@@ -11525,9 +11525,14 @@ function imperativeHandleEffect(create, ref) {
1152511525
if (typeof ref === 'function') {
1152611526
var refCallback = ref;
1152711527
var inst = create();
11528-
refCallback(inst);
11528+
var refCleanup = refCallback(inst);
1152911529
return function () {
11530-
refCallback(null);
11530+
if (typeof refCleanup === 'function') {
11531+
// $FlowFixMe[incompatible-use] we need to assume no parameters
11532+
refCleanup();
11533+
} else {
11534+
refCallback(null);
11535+
}
1153111536
};
1153211537
} else if (ref !== null && ref !== undefined) {
1153311538
var refObject = ref;
@@ -26066,7 +26071,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
2606626071
return root;
2606726072
}
2606826073

26069-
var ReactVersion = '19.0.0-canary-e93cff57';
26074+
var ReactVersion = '19.0.0-canary-f568fe98';
2607026075

2607126076
/*
2607226077
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-prod.fb.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<d3b7614abf5c86177b115750e157b71a>>
10+
* @generated SignedSource<<06016018fb347358b18b57d695069089>>
1111
*/
1212

1313
"use strict";
@@ -4384,14 +4384,13 @@ function updateLayoutEffect(create, deps) {
43844384
return updateEffectImpl(4, 4, create, deps);
43854385
}
43864386
function imperativeHandleEffect(create, ref) {
4387-
if ("function" === typeof ref)
4388-
return (
4389-
(create = create()),
4390-
ref(create),
4391-
function () {
4392-
ref(null);
4393-
}
4394-
);
4387+
if ("function" === typeof ref) {
4388+
create = create();
4389+
var refCleanup = ref(create);
4390+
return function () {
4391+
"function" === typeof refCleanup ? refCleanup() : ref(null);
4392+
};
4393+
}
43954394
if (null !== ref && void 0 !== ref)
43964395
return (
43974396
(create = create()),
@@ -10610,7 +10609,7 @@ var roots = new Map(),
1061010609
devToolsConfig$jscomp$inline_1108 = {
1061110610
findFiberByHostInstance: getInstanceFromNode,
1061210611
bundleType: 0,
10613-
version: "19.0.0-canary-44e696d7",
10612+
version: "19.0.0-canary-b5226534",
1061410613
rendererPackageName: "react-native-renderer",
1061510614
rendererConfig: {
1061610615
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10653,7 +10652,7 @@ var internals$jscomp$inline_1375 = {
1065310652
scheduleRoot: null,
1065410653
setRefreshHandler: null,
1065510654
getCurrentFiber: null,
10656-
reconcilerVersion: "19.0.0-canary-44e696d7"
10655+
reconcilerVersion: "19.0.0-canary-b5226534"
1065710656
};
1065810657
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1065910658
var hook$jscomp$inline_1376 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactFabric-profiling.fb.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<e5a82a39e932ccf268d8c43e0fd08541>>
10+
* @generated SignedSource<<0348b9e6ebecc00eaa767ca2f98fb9d8>>
1111
*/
1212

1313
"use strict";
@@ -4506,14 +4506,13 @@ function updateLayoutEffect(create, deps) {
45064506
return updateEffectImpl(4, 4, create, deps);
45074507
}
45084508
function imperativeHandleEffect(create, ref) {
4509-
if ("function" === typeof ref)
4510-
return (
4511-
(create = create()),
4512-
ref(create),
4513-
function () {
4514-
ref(null);
4515-
}
4516-
);
4509+
if ("function" === typeof ref) {
4510+
create = create();
4511+
var refCleanup = ref(create);
4512+
return function () {
4513+
"function" === typeof refCleanup ? refCleanup() : ref(null);
4514+
};
4515+
}
45174516
if (null !== ref && void 0 !== ref)
45184517
return (
45194518
(create = create()),
@@ -11315,7 +11314,7 @@ var roots = new Map(),
1131511314
devToolsConfig$jscomp$inline_1188 = {
1131611315
findFiberByHostInstance: getInstanceFromNode,
1131711316
bundleType: 0,
11318-
version: "19.0.0-canary-1d21c404",
11317+
version: "19.0.0-canary-7c054062",
1131911318
rendererPackageName: "react-native-renderer",
1132011319
rendererConfig: {
1132111320
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11371,7 +11370,7 @@ var roots = new Map(),
1137111370
scheduleRoot: null,
1137211371
setRefreshHandler: null,
1137311372
getCurrentFiber: null,
11374-
reconcilerVersion: "19.0.0-canary-1d21c404"
11373+
reconcilerVersion: "19.0.0-canary-7c054062"
1137511374
});
1137611375
exports.createPortal = function (children, containerTag) {
1137711376
return createPortal$1(

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-dev.fb.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<eb0c79f9647d9ccb19601e79d168e28a>>
10+
* @generated SignedSource<<429d382e81c12cadfefde85a5059684a>>
1111
*/
1212

1313
'use strict';
@@ -11764,9 +11764,14 @@ function imperativeHandleEffect(create, ref) {
1176411764
if (typeof ref === 'function') {
1176511765
var refCallback = ref;
1176611766
var inst = create();
11767-
refCallback(inst);
11767+
var refCleanup = refCallback(inst);
1176811768
return function () {
11769-
refCallback(null);
11769+
if (typeof refCleanup === 'function') {
11770+
// $FlowFixMe[incompatible-use] we need to assume no parameters
11771+
refCleanup();
11772+
} else {
11773+
refCallback(null);
11774+
}
1177011775
};
1177111776
} else if (ref !== null && ref !== undefined) {
1177211777
var refObject = ref;
@@ -26481,7 +26486,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
2648126486
return root;
2648226487
}
2648326488

26484-
var ReactVersion = '19.0.0-canary-f458e15c';
26489+
var ReactVersion = '19.0.0-canary-6d8999b7';
2648526490

2648626491
/*
2648726492
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol

compiled-rn/facebook-fbsource/xplat/js/react-native-github/Libraries/Renderer/implementations/ReactNativeRenderer-prod.fb.js

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<50ed89ef9d28f94308e802dfa68cd799>>
10+
* @generated SignedSource<<8912877d0e4069bef75f6199a4eb9f6d>>
1111
*/
1212

1313
"use strict";
@@ -4437,14 +4437,13 @@ function updateLayoutEffect(create, deps) {
44374437
return updateEffectImpl(4, 4, create, deps);
44384438
}
44394439
function imperativeHandleEffect(create, ref) {
4440-
if ("function" === typeof ref)
4441-
return (
4442-
(create = create()),
4443-
ref(create),
4444-
function () {
4445-
ref(null);
4446-
}
4447-
);
4440+
if ("function" === typeof ref) {
4441+
create = create();
4442+
var refCleanup = ref(create);
4443+
return function () {
4444+
"function" === typeof refCleanup ? refCleanup() : ref(null);
4445+
};
4446+
}
44484447
if (null !== ref && void 0 !== ref)
44494448
return (
44504449
(create = create()),
@@ -10832,7 +10831,7 @@ var roots = new Map(),
1083210831
devToolsConfig$jscomp$inline_1177 = {
1083310832
findFiberByHostInstance: getInstanceFromTag,
1083410833
bundleType: 0,
10835-
version: "19.0.0-canary-e4d135f3",
10834+
version: "19.0.0-canary-b761b2f6",
1083610835
rendererPackageName: "react-native-renderer",
1083710836
rendererConfig: {
1083810837
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10875,7 +10874,7 @@ var internals$jscomp$inline_1461 = {
1087510874
scheduleRoot: null,
1087610875
setRefreshHandler: null,
1087710876
getCurrentFiber: null,
10878-
reconcilerVersion: "19.0.0-canary-e4d135f3"
10877+
reconcilerVersion: "19.0.0-canary-b761b2f6"
1087910878
};
1088010879
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1088110880
var hook$jscomp$inline_1462 = __REACT_DEVTOOLS_GLOBAL_HOOK__;

0 commit comments

Comments
 (0)