Исключение в HostFunction: ‹unknown› при попытке подтолкнуть новый экран

Описание проблемы

Пытаюсь запихнуть новый экран с Navigation.push(this, { component: { name: 'awesome-places.AuthScreen' }}) и выдает ошибку Exepction in HostFunction <unknown>

снимок экрана с ошибкой

Действия по воспроизведению / фрагменты кода / снимки экрана

Создайте приложение RN, установите необходимые модули (redux, react-redux, response-native-navigation, react-vector-icons) и запустите код на устройстве Android.

Добавьте соответствующий код, App.js и компонент, вызывающий ошибку. Я пробовал запустить Navigation.push с this.props.componentId, но когда я нажимаю кнопку, ответа нет

App.js

import { Navigation } from 'react-native-navigation';
import { Provider } from 'react-redux';

import AuthScreen from './src/screens/Auth/Auth';
import SharePlaceScreen from './src/screens/SharePlace/SharePlace';
import FindPlaceScreen from './src/screens/FindPlace/FindPlace';
import PlaceDetailScreen from './src/screens/PlaceDetail/PlaceDetail';
import configureStore from './src/store/configureStore';

const store = configureStore();

// Register Screens
Navigation.registerComponentWithRedux("awesome-places.AuthScreen", () => AuthScreen, Provider, store);
Navigation.registerComponentWithRedux("awesome-places.SharePlaceScreen", () => SharePlaceScreen, Provider, store);
Navigation.registerComponentWithRedux("awesome-places.FindPlaceScreen", () => FindPlaceScreen, Provider, store);
Navigation.registerComponent("awesome-places.PlaceDetailScreen", () => PlaceDetailScreen);

// Start an App
Navigation.events().registerAppLaunchedListener(() => {
  Navigation.setRoot({
    root: {
      component: {
        name: 'awesome-places.AuthScreen'
      }
    }
  });
});

FindPlace.js

import React, { Component } from 'react';
import { View, Text } from 'react-native';
import { connect } from 'react-redux';
import { Navigation } from 'react-native-navigation';

import PlaceList from '../../components/PlaceList/PlaceList';

class FindPlaceScreen extends Component {
        Navigation.push(this, {
            component: {
                name: 'awesome-places.AuthScreen',
            }
        })

    }

    render () {
        return(
            <View>
                <PlaceList places={this.props.places} onItemSelected={this.itemSelectedHandler} />
            </View>
        );
    }
}

const mapStateToProps = state => {
    return {
        places: state.places.places
    }
}

export default connect(mapStateToProps)(FindPlaceScreen);

Среда

  • Версия React Native Navigation: 2.17.0
  • Версия React Native: 0.59.4
  • Платформы (iOS, Android или оба?): Android
  • Информация об устройстве (Симулятор / Устройство? Версия ОС? Отладка / Выпуск?): Android 7.1.2, отладка



Ответы (1)


Я заметил, что вы нажимаете на экран this вместо явного componentId. При вызове Navigation.push первым аргументом должен быть componentId. См. Справочную документацию .

Кроме того, это может не быть проблемой, но registerComponentWithRedux устарел, и вам следует зарегистрировать экран с помощью новый API

person guy.gc    schedule 02.05.2019
comment
Я уже пробовал передать this.props.componentId в качестве аргумента, но это не имело никакого эффекта - person larynx; 06.05.2019