如何修复wix的Navigation.registerAppLaunchedListener()?

时间:2019-10-02 20:42:39

标签: react-native react-native-android react-native-ios react-native-navigation

新的本机反应项目(版本0.61.1),正在通过基于标签的注册/登录设置开始使用wix导航(v ^ 2.27.9)来实现redux,直到通过身份验证后才确定了不同的导航布局。

我尝试了Navigation.setRoot()' and Navigation.startTabBasedApp()。两者都抛出自己的错误。

我在app.js中的实现:

import {Component} from 'react';
import {Provider} from 'react-redux';
import {Navigation} from 'react-native-navigation';
import ReduxThunk from 'redux-thunk';
import {registerScreens} from './src/screens';
import configureStore from './src/store/configureStore';

const store = configureStore();

registerScreens(store, Provider);

class App extends Component {
  constructor(props) {
    super(props);
    store.subscribe(this.onStoreUpdate.bind(this));
    this.startApp();
  }

  onStoreUpdate() {
    const {user} = store.getState().auth;
    if (this.currentUser !== user) {
      this.currentUser = user;
      this.startApp(user);
    }
  }

  startApp(user) {
    console.log(user);

    Navigation.events().registerAppLaunchedListener(() => {
      switch (user) {
        case !undefined:
          Navigation.startSingleScreenApp({
            screen: {
              screen: 'Authenticated', 
              title: "You're authenticated",
              navigatorStyle: {}, 
              navigatorButtons: {}
            },
          });
          break;
        default:
          Navigation.startTabBasedApp({
            tabs: [
              {
                screen: 'Login',
                label: 'Login',
              },
              {
                screen: 'Register',
                label: 'Register',
              },
            ],
            tabsStyle: {
              intialTabIndex: 1,
            },
          });
      }
    });
  }
}
export default App;

这是错误: TypeError: undefined is not a function (near '..._reactNativeNavigation.Navigation.startTabBasedApp...')

如果我将startTabBasedApp与Navigation.setRoot()交换,例如:

Navigation.setRoot({
          root: {
            bottomTabs: {
              children: [
                {
                  component: {
                    name: 'Login',
                    options: {
                      bottomTab: {
                        text: 'Login',
                      },
                    },
                  },
                },
                {
                  component: {
                    name: 'Register',
                    options: {
                      bottomTab: {
                        text: 'Register',
                      },
                    },
                  },
                },
              ],
            },
          },
        });

我收到此错误:

TypeError: concreteComponentProvider is not a function. (In 'concreteComponentProvider()', 'concreteComponentProvider' is an instance of Object)

我希望应用程序打开一个基于标签的应用程序,其中一个标签为“注册”屏幕,另一个标签为“登录”屏幕

0 个答案:

没有答案