React HOC无法解决导入

阿米尔

嗨,我正在创建我的第一个HOC反应,但遇到了麻烦。我在HOC类中导入Contentservice,并且有一个由WithBackend包装的简单Page类。

当我使用react Route导航到页面组件时,出现错误:

TypeError: Cannot read property 'getPage' of undefined

当我调试代码时,我可以看到该服务在构造函数中可用,但是当它进入getPage方法时,我得到了alert(id),但是它在网上中断了

      this.service.getPage(id);

这是包装函数:


import React from "react";
import ContentService from "./ContentService";

const WithBackend = (WrappedComponent) => {
  class HOC extends React.Component {
    constructor() {
      super();
      this.service = new ContentService();
    }

    getPage(id) {
      alert(id);
      this.service.getPage(id);
    }

    render() {
      return <WrappedComponent getPage={this.getPage} {...this.props} />;
    }
  }
  return HOC;
};

export default WithBackend;

这是包装的组件:

import React, { Component } from "react";
import WithBackend from "./WithBackend";


class PageX extends Component {

  render() {
    return (
      <div>
        <h2>Home</h2>
      </div>
    );
  }

  componentDidMount() {
    this.props.getPage("123");
  }
}
const Page = WithBackend(PageX);
export default Page;

这是ContentService类:


class ContentService {
  getPage(id) {
    alert(id);
    return "Some page";
  }
}

export default ContentService;

谁能看到我做错了吗?另外,我只是将页面的名称更改为PageX,因此如果页面名称被Page包裹,则可以导入。这有必要吗?我宁愿将整个页面命名为page。

非常感谢您的帮助。

普里维

将以下内容添加到您的代码中

const WithBackend = (WrappedComponent) => {
  class HOC extends React.Component {
    constructor() {
      super();
      this.service = new ContentService();
      this.getPage = this.getPage.bind(this) // <-- Add this
    }

    getPage(id) {
      alert(id);
      this.service.getPage(id);
    }

    render() {
      return <WrappedComponent getPage={this.getPage} {...this.props} />;
    }
  }
  return HOC;
};

我也鼓励您阅读有关此绑定在javascript中的工作方式的信息。这是我喜欢的博客链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Intellij IDEA无法解决React Native导入

来自分类Dev

无法导入React主题

来自分类Dev

PhpStorm无法解决软件包导入,即使它存在(react-router-dom)

来自分类Dev

React Google Maps无法导入

来自分类Dev

无法解决循环导入

来自分类Dev

导入javafx无法解决

来自分类Dev

react-bootstrap无法正确导入

来自分类Dev

无法在React Native中导入.js文件

来自分类Dev

无法从“ react-google-maps”导入SearchBox

来自分类Dev

react-native-elements FormInput 无法导入

来自分类Dev

我无法在 React 中导入组件

来自分类Dev

无法解决 react-native-swiper

来自分类Dev

在React解决方法中被命名为惰性导入

来自分类Dev

React.lazy“无法导入动态导入的模块”

来自分类Dev

Eclipse libgdx导入无法解决

来自分类Dev

导入无法在Eclipse中解决

来自分类Dev

导入无法在Java中解决

来自分类Dev

Theme HOC的样式化组件无法与React.FC类型一起使用

来自分类Dev

无法在我的Mocha测试中导入React组件

来自分类Dev

无法识别使用Webpack和JSX导入React

来自分类Dev

无法导入react-addons-shallow-compare,Typescript

来自分类Dev

使用Typescript时无法从单独的文件导入React JSX

来自分类Dev

React Native:无法导入和使用外部软件包

来自分类Dev

无法使用ThreeJS和React导入3D模型

来自分类Dev

无法从React库npm包(redux)导入reducer

来自分类Dev

无法将Material UI Labs导入React应用

来自分类Dev

无法在React Native中更改或使用导入的TextInput的属性

来自分类Dev

无法从React中的data.js文件导入图像

来自分类Dev

React Native:无法导入和使用外部软件包