2017-02-24 7 views
6

私はreactnavigationとreduxで反応ネイティブアプリを作成しています。私はNavContainerから次の警告を取得するアプリをロードするにはreactionnavigationでナビ.dispatchが定義されていません

は:Warning: Failed prop type: The prop 'navigation.dispatch' is marked as required in 'CardStack', but its value is 'undefined'私はnavigation.dispatchとしてthis.props.navigation.navigate('Station');を経由してページを移動しようとすると、このエラーにつながる

アプリはNavContainerを持っている機能ではありません私は派遣として何かが欠けている推測していることは、レンダリング機能で定義されていません:あなたは定義

import React, { Component } from 'react' 
import { addNavigationHelpers } from 'react-navigation' 
import AppNavigator from '../lib/navigationConfiguration' 
import { connect } from 'react-redux' 
import { bindActionCreators } from 'redux'; 
import { ActionCreators } from '../actions'; 

class NavContainer extends Component { 

    render(){ 
    const { dispatch, navigationState} = this.props 
    return (
     <AppNavigator 
     navigation={ 
      addNavigationHelpers({ 
      dispatch: dispatch, 
      state: navigationState 
      }) 
     } 
     /> 
    ) 
    } 
} 
function mapStateToProps(state){ 
    return { 
    navigationState: state.nav 
    } 
} 
function mapDispatchToProps(dispatch){ 
    return bindActionCreators(ActionCreators, dispatch); 
} 

export default connect(mapStateToProps, mapDispatchToProps)(NavContainer) 

答えて

19

mapDispatchToPropsconnectはPAをしませんラップされたコンポーネントにss dispatchがあります。そのため、は未定義です。これを解決するには、次のようにします。

function mapDispatchToProps(dispatch){ 
    return Object.assign({dispatch: dispatch}, bindActionCreators(ActionCreators, dispatch)); 
} 
+1

ありがとうございました!できます! –

+1

'mapDispatchToProps'を渡す必要はありません。2番目のパラメータを省略すると自動的にディスパッチをpropsに渡します。 –

関連する問題