React Native: неверный вызов ловушки - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь сделать приложение android с реагировать на родной. После создания проекта и установки всех зависимостей, которые я хочу использовать, используйте Hook внутри навигатора, например:

const MainNavigator = createStackNavigator({
    Dashboard: DashboardScreen,
    ListSurveyor: {
        screen: topSurvayorsNavigator,
        navigationOptions: ({ navigation }) => {
            const dispatch = useDispatch();
            const [term, setTerm] = useState('');

            const searchServeyor = (item) => {
                console.log('nav: ', item);
                dispatch(survayouActions.searchSurveyouList(item))
            }
            switch (navigation.state.routes[navigation.state.index]["routeName"]) {
                case "ActiveSurveyor":
                    return {
                        header: () => <CustomHeader
                            title='Active'
                            // term={term}
                            // onTermChange={setTerm}
                            onTermSubmit={searchServeyor}
                        />
                    }

                case "DeActiveSurveyor":
                    return {
                        header: () => <CustomHeader
                            title='DisActive'
                            onTermSubmit={searchServeyor}
                        />
                    }
                default:
                    return { title: (navigation.state.routes[navigation.state.index]["routes"])[(navigation.state.routes[navigation.state.index]["index"])].routeName }
            }
        }
    },
    Audited: AuditedFileNumSurveyor,
}, {
    defaultNavigationOptions: defaultNavOptions
});

Я импортировал useState и useDispatch, как показано ниже :

import React, { useState } from 'react';
import { useDispatch } from "react-redux";

Но когда я запускаю приложение, я получаю эту ошибку:

Недопустимый вызов ловушки. Хуки могут быть вызваны только внутри тела функционального компонента. Это может произойти по одной из следующих причин: 1. У вас могут быть несовпадающие версии React и средства визуализации (например, React DOM). 2. Возможно, вы нарушаете правила хуков. 3. Возможно, у вас есть несколько копий React в Это же приложение. Посмотрите советы о том, как отладить и исправить эту проблему.

Я использовал перехват внутри метода navigationOptions: ({ navigation }) => {, но что происходит?

Это пакет. json информация:

{
  "name": "RNMngm",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "base-64": "^0.1.0",
    "prop-types": "^15.7.2",
    "react": "16.9.0",
    "react-native": "0.61.5",
    "react-native-charts-wrapper": "^0.5.7",
    "react-native-gesture-handler": "^1.5.2",
    "react-native-paper": "^3.4.0",
    "react-native-reanimated": "^1.4.0",
    "react-native-svg": "^10.0.0",
    "react-native-vector-icons": "^6.6.0",
    "react-navigation": "^4.0.10",
    "react-navigation-drawer": "^2.3.3",
    "react-navigation-header-buttons": "^3.0.4",
    "react-navigation-material-bottom-tabs": "^2.1.5",
    "react-navigation-stack": "^1.10.3",
    "react-navigation-tabs": "^2.7.0",
    "react-redux": "^7.1.3",
    "redux": "^4.0.5",
    "redux-thunk": "^2.3.0"
  },
  "devDependencies": {
    "@babel/core": "7.7.7",
    "@babel/runtime": "7.7.7",
    "@react-native-community/eslint-config": "0.0.5",
    "babel-jest": "24.9.0",
    "eslint": "6.8.0",
    "jest": "24.9.0",
    "metro-react-native-babel-preset": "0.56.3",
    "react-test-renderer": "16.9.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

1 Ответ

1 голос
/ 12 января 2020

Хуки могут использоваться только в компоненте и не могут быть использованы в навигаторе или навигационных параметрах. Если вам нужно использовать состояние в навигаторе или navigationOptions, вам нужно установитьParams в компоненте, а затем использовать метод getParam в navigationOptions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...