Есть такой hoc компонент:
import React, {useEffect, useState} from "react";
const withData = (WrappedComponent) => {
console.log('withData')
return (props) => {
const [state, setState] = useState({
data: [],
loading: true,
error: null,
});
useEffect(() => {
props.getData()
.then(data => {
setState({
data: data,
loading: false,
error: null,
})
})
.catch(error => {
setState({
data: [],
loading: false,
error: error,
})
})
}, []);
console.log(props, state);
return state.loading
? <span>Loading</span>
: state.error
? <span>{state.error}</span>
: <WrappedComponent {...props} data={state.data}/>
};
};
export default withData;
Консоль:
Судя по консоли, компонент рендерится 4 раза... Почему так?