createStackNavigator приводит к тому, что null не является объектом (эвакуация '_RNGestureHandlerModule.default.direction), даже если он не используется - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь ознакомиться с новейшей версией реакции-навигации. Я сделал по умолчанию реактивный проект версии 0.60.0. Я заметил, что когда я добавляю:

import {createStackNavigator} из 'response-navigation-stack';

, он сразу же вылетает из приложения и выдает мне сообщение об ошибке:

null не является объектом (оценивается _RNGestureHandlerModule.defaultDirection)

Я получаю это сообщение об ошибке, даже если я только импортирую createStackNavigator. Если закомментировать импорт, приложение работает нормально.

Мой package.json выглядит примерно так:

{
  "name": "awesome",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "react": "16.8.6",
    "react-native": "0.60.0",
    "react-native-gesture-handler": "^1.5.0",
    "react-native-reanimated": "^1.4.0",
    "react-native-screens": "1.0.0-alpha.23",
    "react-navigation": "^4.0.10",
    "react-navigation-stack": "1.5.1",
    "@react-navigation/core": "^3.5.0",
    "@react-navigation/native": "^3.6.2"
  },
  "devDependencies": {
    "@babel/core": "^7.7.0",
    "@babel/runtime": "^7.7.1",
    "@react-native-community/eslint-config": "^0.0.5",
    "babel-jest": "^24.9.0",
    "eslint": "^6.6.0",
    "jest": "^24.9.0",
    "metro-react-native-babel-preset": "^0.57.0",
    "react-test-renderer": "16.8.6"
  },
  "jest": {
    "preset": "react-native"
  }
}

Мой файл App.js - это стандартный файл приложения, содержащий только две дополнительные строки импорта.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

Вы можете проверить список установки

    yarn add react-native-reanimated react-native-gesture-handler react-native-screens@^1.0.0-alpha.23.

Чтобы завершить связывание на iOS, убедитесь, что у вас установлены Cocoapods. Затем выполните:

    cd ios
    pod install
    cd ..

Чтобы завершить установку react-native-screens для Android, добавьте следующие две строки в раздел зависимостей в android/app/build.gradle:

    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'

Чтобы завершить установку react-native-gesture-handler для Android, внести следующие изменения в MainActivity.java:

    package com.reactnavigation.example;

    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);
    +      }
    +    };
    +  }
    }
0 голосов
/ 06 ноября 2019

Убедитесь, что вы установили

yarn add react-navigation
yarn add react-native-gesture-handler react-native-reanimated

Затем обновите MainActivity.java

package com.reactnavigation.example;

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);
+      }
+    };
+  }
}

И после этого выполните:

cd android
gradlew clean
cd ..

Затем выполните обычные действия:

реакция-нативный беги-андроид

...