私はReact-Native、React-NavigationおよびReduxを使用しています。私はユーザー情報をサーバーに送信し、トークンを聞くサインアップページを持っています。トークンが受信されると、グローバル状態{userLoggedIn:true}が変更されます。componentDidUpdateはページナビゲーションのあとも実行され続けます
私のコンポーネントでは、componentDidUpdateを使用してuserLoggedInがtrueであるかどうかを確認し、そうであれば私は「メイン」ページにリダイレクトします。
// component/register
class Register extends Component {
...
componentDidUpdate(){
console.log('componentDidUpdate from the register page')
if (this.props.people.userLoggedIn==true){
this.props.navigation.navigate('Main');
}
}
render(){
//sign up form
}
}
...
export default connect(mapStateToProps, mapDispatchToProps)(Register);
これは、メインページにリダイレクトされているため、正常に動作します。しかし、メインページ自体では、それはノンストップでさわやかです。私はログをチェックし、componentDidUpdateがまだ登録ページから呼び出されているのを見ました。
したがって、なぜcomponentDidUpdateがまだ呼び出されているのか少し混乱していますか?新しいページに移動した後にチェックを止めないのですか?
EDIT 1:componentDidUpdateに問題がないことを認識しました。レンダリングメソッド内部にリダイレクト条件を挿入しましたが、無限ループも発生します。新しいページに移動したときにレンダリングしようとしている理由を理解できません。
他のページに移動しても、前のページはまだスタックに残っていますが、隠されていないだけです。それは、小道具や状態が変わったときにも更新されます。 – Val