Вы можете создать компонент только для визуализации его дочерних элементов.Вот пример того, как сделать это в реакции.
Примерно так.
class Query extends Component {
state = {
loading: true,
error: {},
data: {}
}
componentDidMount() {
//do the apicall here
this.setState({ loading: false, data: { header: "may the force be with you" } });
}
render() {
const { state: props, props: { children } } = this;
// return the data here
// passing state as props here after renaming state to props
return children(props);
}
}
Использование режима реакции вместо редукса.Вы можете сделать этот подключенный компонент, если вы хотите использовать Redux.И использовать компонент, как это.
<Query>
{
({ loading, error, data }) => {
if (loading) return <>Loading.......</>
if (Object.keys(error).length > 0) return <>Some Error Handler</>
if (data) return (
<>
<img src={logo} className="App-logo" alt="logo" />
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
{data.header}
</a>
</>
)
}
}
</Query>