获取未定义不是对象(评估“ props.navigation.addListener”)

时间:2019-04-22 11:20:11

标签: react-native high-order-component

我正在尝试为Backhandler实施HOC。我有3个组件都包装在createBottomTabNavigator中,家用组件就是其中之一。但是在执行反向处理之前,HOC会显示此错误。 enter image description here

组件主页-

import React, { Component } from 'react';
import {Text,View} from 'react-native';
import updateComponent from './HOC/updateComponent';
class home extends Component {
constructor(props) {
    super(props);
}
 render() {
  return (
     <View><Text> HOC</Text></View>
    );
  }
}
export default updateComponent(home);

HOC updateComponent

import React, { Component } from 'react';
const updateComponent = WrappedComponent => {
  class NewComponent extends Component {
    constructor(props) {
      super(props);
    }
    render() {

      return <WrappedComponent />;
    }
  }
  return NewComponent;
};
export default updateComponent;

1 个答案:

答案 0 :(得分:0)

您的home组件应从React docs大写:

  

当元素类型以小写字母开头时,它指的是   内置组件(例如或),并导致字符串“ div”   或“ span”传递给React.createElement。以a开头的类型   大写字母,例如编译为React.createElement(Foo)和   对应于在JavaScript文件中定义或导入的组件。

     

我们建议使用大写字母命名组件。如果你有一个   以小写字母开头的组件,请将其分配给   在JSX中使用大写变量之前。

另一件事(不确定会导致错误,但稍后会出现错误)是,您没有将道具传递给NewComponent,这意味着每次将{ 1}},您将失去所有道具。

解决方案:

  1. updateComponent-> home
  2. Home-> return <WrappedComponent />