如何修复react-native-gesture-handler错误不起作用

zsbz8rwp  于 2023-03-03  发布在  React
关注(0)|答案(8)|浏览(405)

我在react-native中创建了一个新项目,然后安装最新版本(npm install --save react-navigationnpm install --save react-native-gesture-handler)(react-native:0.60.0)自动链接,所以,我没有链接,但仍然显示错误,!https:prnt.sc/oaxxuc
Task :react-native-gesture-handler:compileDebugJavaWithJavac **FAILED**
卸载gesture-handler后显示此类错误!https:prnt.sc/oaxx8i
请帮助解决此错误
最新版本的React原生:-

System:
     OS: Linux 4.15 Ubuntu 16.04.5 LTS (Xenial Xerus)
     react: 16.8.6 => 16.8.6 
     react-native: 0.60.0 => 0.60.0    npmGlobalPackages:
     react-native-cli: 2.0.1

谢谢

0tdrvxhp

0tdrvxhp1#

您应该粘贴导入'react-native-gesture-handler';在index.js的顶部,这是react原生开箱即用的标准。
这是你导入App.js文件的地方,它在文档中写得很清楚。
此处文档https://reactnavigation.org/docs/en/getting-started.html

lx0bsm1f

lx0bsm1f2#

这个问题已经发布在github上,你可以使用下面的解决方案,它可以在RN 0.60.0上工作。
https://github.com/kmagiera/react-native-gesture-handler/issues/642#issuecomment-509113481

7ivaypg9

7ivaypg93#

    • 首先,使用Yarn安装磁带库:**

Yarn添加React-自然-姿态-处理器
或使用npm(如果您愿意):
npm安装--保存本机React手势处理程序

    • 链接**本机React链接本机React手势处理程序
    • 安卓**
    • 按照以下步骤操作:**

如果您使用其中一个原生导航库(例如wix/react-native-navigation),您应该按照此单独的指南在Android上设置手势处理程序库。忽略此步骤的其余部分-它仅适用于使用标准Android项目布局的RN应用。

Update your MainActivity.java file (or wherever you create an instance of ReactActivityDelegate), so that it overrides the method responsible for creating ReactRootView instance and then use the root view wrapper provided by this library. Do not forget to import ReactActivityDelegate, ReactRootView, and RNGestureHandlerEnabledRootView:
    • 包com. swmansion.手势处理器.React.示例;**
import com.facebook.react.ReactActivity;
+ import com.facebook.react.ReactActivityDelegate;
+ import com.facebook.react.ReactRootView;
+ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;

public class MainActivity extends ReactActivity {

  @Override
  protected String getMainComponentName() {
    return "Example";
  }

+  @Override
+  protected ReactActivityDelegate createReactActivityDelegate() {
+    return new ReactActivityDelegate(this, getMainComponentName()) {
+      @Override
+      protected ReactRootView createRootView() {
+       return new RNGestureHandlerEnabledRootView(MainActivity.this);
+      }
+    };
+  }
}
    • 操作系统**

除后续步骤中的操作外,无需在iOS上进行其他配置。
现在一切就绪。使用react-native run-androidreact-native run-ios运行应用

oyt4ldly

oyt4ldly4#

如果你的React Native〉= 0.60,你需要先禁用react-native-gesture-handler的自动链接,要禁用它的自动链接,在你的项目根目录下创建一个react-native.config.js文件,包含以下内容:

module.exports = {
  dependencies: {
    'react-native-gesture-handler': {
      platforms: {
        android: null,
        ios: null,
      },
    },
  },
};
ippsafx7

ippsafx75#

如文件所示

在Android上,RNGH默认情况下不工作,因为模态不在本机层次结构中的React Native Root视图下。要修复此问题,需要使用gestureHandlerRootHOC Package 组件

const ExampleWithHoc = gestureHandlerRootHOC(() => (
    <View>
      <DraggableBox />
    </View>
  );
);

export default function Example() {
  return (
    <Modal>
      <ExampleWithHoc />
    </Modal>
  );
}

这里是文档

tpgth1q7

tpgth1q76#

对于react-native-gesture-handle 2以上版本,我们只需遵循App.js中的更改

import {GestureHandlerRootView} from 'react-native-gesture-handler';

export default function App() {
  return <GestureHandlerRootView style={{ flex: 1 }}>{/* content */}</GestureHandlerRootView>;
}
46qrfjad

46qrfjad7#

在我的例子中,我刚刚禁用了newArchEnabled=false。

gblwokeq

gblwokeq8#

从1.1.0 -〉1.0.16降级并使用确切版本(-E):

npm i react-native-gesture-handler@1.0.16 -D -E

相关问题