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);
明らかにリセットはありません。しかし、なぜ誰もがコードを使用できるのでしょうか?
わかりません。任意の助けをいただければ幸いです。前もって感謝します。
これが私の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では、このコードを使用してスタックをリセットできます。
import { NavigationActions, StackActions } from 'react-navigation';
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'MainActivity' })],
});
this.props.navigation.dispatch(resetAction);
これが役立つことを願っています...
ネストされたルーターを使用している場合は、key
をnullに設定する必要もあります。そうでない場合は、現在アクティブなナビゲーターを引き続き調べます。
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)