react-native – navigation.dispatch在reactnavigation中未定义

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

在加载应用程序时,我从NavContainer收到以下警告:警告:失败的道具类型:道具’navigation.dispatch’在’CardStack’中标记为必需,但其值为’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不会将调度传递给包装组件..这就是为什么this.props.dispatch未定义的原因.要解决这个问题,您可以:
function mapDispatchToProps(dispatch){
  return Object.assign({dispatch: dispatch},bindActionCreators(ActionCreators,dispatch));
}

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...