2017-06-09 12 views
1

私はまだナビゲーションに反応するのが新しいです。 ログイン後に経路情報を正常にリセットしたいと考えています。しかし、私はメインページに渡したいログイン情報のようないくつかのパラメータがあります。プロフィールページでリアクションナビゲーションリセットパラメータを追加できますか?

import { NavigationActions } from 'react-navigation' 

const resetAction = NavigationActions.reset({ 
    index: 0, 
    actions: [ 
     NavigationActions.navigate({ routeName: 'Profile', 
       params:{user:this.state.username}}) 
     ] 
    }) 
    this.props.navigation.dispatch(resetAction) 

、私はのparamsへのアクセスを取得したいので、私はこれを使用します。

constructor(props){ 
super(props) 
this.state = { username: this.props.navigation.state.params.user, 
    } 

が、私は受け取っ:未定義「の_this.propsを評価対象(ではありません。 navigation.state.params.user ')をコンソールログに保存します。 パラメータを取得する方法を知っていますか?ありがとう

答えて

1

usernameをキーとして渡しています。あなたがそれを取得しているとき だからあなたのコードは、この

ステップ1のようになります渡し

this.props.navigation.navigate('Your-Screen_name',{ username: 'Lucy' }) 

ステップ2のparams:PARAMS

this.state = { 
    username: this.props.navigation.state.params.username, 
} 
+0

こんにちは、あなたが述べたように、私が編集を持っていますが、私はまだ同じエラーメッセージ – cg1991

+0

を受け取り、あなたはReduxの構造を使用しています? –

+0

こんにちは私はいいえ、私が従うガイドはからです:https://reactnavigation.org/docs/navigators/navigation-actions。 Reduxは事前ガイドの中にあり、私はそれに精通していません。 – cg1991

2

あなたはでのparamsを渡すことができます取得反応ネイティブスタックナビゲータのアクションをリセットする: -

const resetAction = NavigationActions.reset({ 
      index: 0, 
      actions: [ 
       NavigationActions.navigate({ 
        routeName: 'ScreenName',  // name of the screen you want to navigate 
        params: { 
         paramsKey: paramsValue // this second parameter is for sending the params 
        } 
       }) 
      ], 
}); 
this.props.navigation.dispatch(resetAction); 

そして、このようなナビゲーション状態のparamsから2番目の画面でパラメータ値を取得する: -

static navigationOptions = ({navigation, screenProps}) => { 
    const params = navigation.state.params || {}; // You can get the params here as navigation.state.params.paramsKey 

    console.log("CompareScreen product_id:", params.paramsKey); 
} 
関連する問題