Enable setJSResponder/setIsJSResponder for React Native Fabric (#21439)
* Enable setJSResponder/setIsJSResponder for React Native * yarn prettier * add types to react-native-host-hooks * yarn prettier * mock setIsJSResponder
Joshua Gross committed
May 5, 2021 at 21:09 UTC
bd070eb2c489a1f758e4a55b193820af7346fa15
3 files changed
+23
-1
packages/react-native-renderer/src/ReactFabricGlobalResponderHandler.js
+17
-1
@@ -19,7 +19,23 @@ const ReactFabricGlobalResponderHandler = {
19
);
20
21
if (isFabric) {
22
- // Noop for now until setJSResponder/clearJSResponder are supported in Fabric
22
+ if (from) {
23
+ // equivalent to clearJSResponder
24
+ nativeFabricUIManager.setIsJSResponder(
25
+ from.stateNode.node,
26
+ false,
27
+ blockNativeResponder || false,
28
+ );
29
+ }
30
+
31
+ if (to) {
32
+ // equivalent to setJSResponder
33
+ nativeFabricUIManager.setIsJSResponder(
34
+ to.stateNode.node,
35
+ true,
36
+ blockNativeResponder || false,
37
+ );
38
+ }
39
} else {
40
if (to !== null) {
41
const tag = to.stateNode.canonical._nativeTag;
packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/InitializeNativeFabricUIManager.js
+1
@@ -176,6 +176,7 @@ const RCTFabricUIManager = {
176
);
177
success(1, 1, 100, 100);
178
}),
179
+ setIsJSResponder: jest.fn(),
180
};
181
182
global.nativeFabricUIManager = RCTFabricUIManager;
scripts/flow/react-native-host-hooks.js
+5
@@ -179,6 +179,11 @@ declare var nativeFabricUIManager: {
179
locationY: number,
180
callback: (Fiber) => void,
181
) => void,
182
+ setIsJSResponder: (
183
+ node: Node,
184
+ isJsResponder: boolean,
185
+ blockNativeResponder: boolean,
186
+ ) => void,
187
...
188
};
189