При запуске приложения React Native я ошибаюсь, что функции недопустимы в качестве дочернего элемента React - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь запустить свое приложение с реакцией-native-navigation и persistStore с избыточным persistStore. Я получаю предупреждение о том, что функции недопустимы в качестве дочернего элемента React. Это может произойти, если вы возвращаете компонент вместо визуализации.

Есть ли обходной путь для запуска этого начального экрана, недавно я добавил функцию startApp и вызвал ее внутри рендера.

Вот мой начальный компонент для запуска приложения:

 import React, { Component } from "react";
 import { Provider } from "react-redux";
 import { View, Text } from "react-native";
 import { persistStore } from "redux-persist";
 import { Navigation } from "react-native-navigation";
 import Mapbox from "@mapbox/react-native-mapbox-gl";

 import { registerScreens } from "./screens";
 import store from "./store/configureStore";
 import { appInit, getInitialScreen } from "./appInit";
 import { handleErrorObject } from "./lib/handleError";

 Mapbox.setAccessToken("pk.eyJ123425KKbcgNww");

 export default class App extends Component {
  startApp = () => {
    const persistor = persistStore(store, null, () => {
        registerScreens(store, Provider);

        appInit(store)
            .then(() => {
                const initialScreen = getInitialScreen(store.getState());

                Navigation.startSingleScreenApp({
                    screen: {
                        screen: initialScreen
                    },
                    passProps: {
                        persistor
                    },
                    drawer: {
                        left: {
                            screen: "DrawerMenuScreen"
                        }
                    },
                    appStyle: {
                        orientation: "portrait"
                    }
                });
            })
            .catch(error => {
                handleErrorObject("Error initializing app", error);
            });
    });
};
render() {
    return <View>{this.startApp}</View>;
}
}

1 Ответ

0 голосов
/ 13 сентября 2018

В вашем коде две вещи не так.

startApp является функцией, и для визуализации JSX , возвращенной из любой функции, необходимо вызвать ее как {this.startApp()}

У вас нет JSX , который будет возвращен внутри startApp, поскольку он просто устанавливает значения на persistStore и будет содержать объект persistor .

Я предлагаю вам взглянуть на документы и на эту статью , чтобы узнать больше об использовании react-native-navigation

...