Вызов метода класса внутри другого класса - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть сервисная функция withFetching, которая возвращает класс Fetch:

import React from 'react';
import * as axios from 'axios';

const withFetching = url => Component => {
    class Fetch extends React.Component {
        state = {
            data: null,
            isLoading: false
        };

        componentDidMount() {
            this.setState({isLoading: true});
        }

        get = (params) => {
            axios.get(url, params)
                .then(response => {
                    this.setState({data: response.data, isLoading: false});
                })
                .catch(error => {
                    console.error('%c ERROR', 'color: #FA12D6', error);
                });
        };

        post = data => {}

        put = () => {}

        render() {
            return <Component {...this.state}
                              {...this.props}
                              post={this.post}
                              put={this.put}
                              delete={this.delete}/>;
        }
    }

    Fetch.displayName = `Fetch(${Component.displayName || Component.name || 'Component'})`;

    return Fetch;

};

export default withFetching;

Мне нужен метод вызова get в другом классе.Я делаю что-то вроде этого:

import React, { Component } from 'react';
import MyComponent from './MyComponent/index';
import WithFetch from './../../../../services/withFetching';

class TableSources extends Component {
    componentWillMount() {
        const params = {}

        WithFetch('my URL')(MyComponent).get(params)
    }

    render() {
        return (...)
    }
}

export default TableSources;

1 Ответ

0 голосов
/ 08 февраля 2019

Я решил проблему вызова метода службы CRUD

import React from 'react';
import WithFetching from './../../../../services/withFetching';

class MyComponent extends React.Component {
    state = {};

    componentWillMount() {
        const {post} = this.props;
        post({data:'data'});
    }

    render() {
        return (
            ...
        );
    }
}

export default WithFetching('URL')(MyComponent);

Мы получаем метод класса post через props и вызываем его в жизненном цикле компонента (componentWillMount)

...