Вы можете создать компонент более высокого порядка .
import React, { Component } from 'react'
export default withData = MyComponent => {
return class MyComponentWithData extends Component {
state = { projects: null, visible: null, isLoaded: false }
componentDidMount() {
// Retrieve projects data
axios.get('/env?var=READER_HOSTNAME')
.then(response => {
return axios.get(`${response.data.var}/graphql?query=${queries.allProjects()}`)
}).then(response => {
const { projects } = response.data.data
this.setState({
projects,
visible: projects,
isLoaded: true
})
})
}
render() {
const { projects, visible, isLoaded } = this.state
if (!isLoaded) {
return null
}
return (
<MyComponent
{...this.props}
projects={projects}
visible={visible}
isLoaded={isLoaded}
/>
)
}
}
}
Импорт withData
в компонент, с которым вы хотите его использовать, так:
class SomeComponent extends Component {
// ... component code
}
export default withData(SomeComponent)