navigation.dispatch在反应导航中未定义
问题描述:
我正在使用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)
答
当你定义一个mapDispatchToProps
,connect
不PA ss dispatch
到封装的组件..这就是为什么this.props.dispatch
未定义。要解决这个问题,你可以这样做:
function mapDispatchToProps(dispatch){
return Object.assign({dispatch: dispatch}, bindActionCreators(ActionCreators, dispatch));
}
谢谢卢卡斯!有用! –
你不需要传递'mapDispatchToProps',当省略第二个参数来连接它时会自动将调度传递给道具。 –