NavigationActions.reset не является функцией? - PullRequest
0 голосов
/ 10 июня 2018

Я создал проект с экраном Welcome. Перейдите к экрану MainActivity.Я хочу, чтобы, когда пользователь нажимал кнопку «Назад», он закрывал приложение на MainActivity, а не на экране Welcome.Я использую библиотеку react-navigation, поэтому я искал какое-то решение от Github.

Когда я использую код из https://github.com/react-navigation/react-navigation/issues/295., я получаю сообщение об ошибке:

NavigationActions.reset is not a function

I console.log (NavigationActions);

enter image description here

Сброс явно не выполняется.Но почему все могут использовать этот код?

Я не могу понять это.Любая помощь будет оценена.Заранее спасибо.

Вот мой Welcome.js:

import React, { Component } from 'react';
import { View, Text, ActivityIndicator } from 'react-native';
import { NavigationActions } from 'react-navigation';
import { connect } from 'react-redux';
import { ColorSetting } from './common/ColorSetting';
import { fetchMainMovieList } from '../actions';

class Welcome extends Component {
  static navigationOptions = {
    header: null,
  };

  componentDidMount() {
    // call main page data first
    this.props.fetchMainMovieList();

    this.timer = setTimeout(() => { 
      this.navigateToMainActivity();
    }, 3000);
  }
  componentWillUnmount() {
    // if this.timer existed,then use clearTimeout to remove it.
    this.timer && clearTimeout(this.timer);
  }

  navigateToMainActivity() {
    console.log(NavigationActions);
    const resetAction = NavigationActions.reset({
      index: 1,
      actions: [
        NavigationActions.navigate({ routeName: 'MainActivity' })
      ]
    });

    this.props.navigation.dispatch(resetAction);
  }

  render() {
    return (
      <View>
        <Text>Three !</Text>
      </View>
    );
  }
}

export default connect(null, { fetchMainMovieList })(Welcome);

Ответы [ 2 ]

0 голосов
/ 25 июля 2018

Если вы используете вложенный маршрутизатор, вам также нужно установить key в ноль, иначе он будет продолжать смотреть в настоящее время активный навигатор.

import { NavigationActions, StackActions } from 'react-navigation'
const resetAction = StackActions.reset({
    index: 0,
    key: null, // <-- this
    actions: [NavigationActions.navigate({ routeName: route })]
})
this.props.navigation.dispatch(resetAction)
0 голосов
/ 10 июня 2018

в версии> 2 реагирующей навигации, вы можете использовать этот код для сброса стека:

    import { NavigationActions, StackActions } from 'react-navigation';
    const resetAction = StackActions.reset({
            index: 0,
            actions: [NavigationActions.navigate({ routeName: 'MainActivity' })],
        });
    this.props.navigation.dispatch(resetAction);

Надеюсь, это поможет ...

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