navigation.dispatch在reactnavigation中未定义

Dan*_*Dan 7 react-native redux react-navigation

我正在使用reactnavigation和redux创建一个反应原生的应用程序.

加载应用程序后,我从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');因为nav.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)
Run Code Online (Sandbox Code Playgroud)

Luc*_*cas 21

当你定义一个时mapDispatchToProps,connect不会传递dispatch给包装的组件..这就是为什么this.props.dispatch是未定义的.要解决这个问题,您可以:

function mapDispatchToProps(dispatch){
  return Object.assign({dispatch: dispatch}, bindActionCreators(ActionCreators, dispatch));
}
Run Code Online (Sandbox Code Playgroud)