@samitouri / QOS-React / commits / bd070eb2c4

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