2017-02-24 72 views
6

我正在使用reactnavigation和redux创建反应原生应用程序。navigation.dispatch在反应导航中未定义

在加载应用程序,我得到NavContainer以下警告:Warning: Failed prop type: The prop 'navigation.dispatch' is marked as required in 'CardStack', but its value is 'undefined'

,当我试图通过this.props.navigation.navigate('Station');为navigation.dispatch导航页这导致错误不是一个函数

的应用程序有一个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到封装的组件..这就是为什么this.props.dispatch未定义。要解决这个问题,你可以这样做:

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

谢谢卢卡斯!有用! –

+1

你不需要传递'mapDispatchToProps',当省略第二个参数来连接它时会自动将调度传递给道具。 –

相关问题