У меня есть сервисная функция 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;