У меня есть оболочка для моих компонентов, которая говорит им не отображать, пока они не завершат загрузку, которая выглядит следующим образом
import React from 'react';
import LoadingSpinner from 'vivid.react.components/atoms/LoadingSpinner';
class Wrapper extends React.Component {
componentDidMount() {
this.props.getInitialState();
}
render() {
const { error, isLoadingInitialState } = this.props;
return (
<div className='wrapper'>
{!!error && <div>Error: {error.message}</div>}
{isLoadingInitialState
? <LoadingSpinner/>
: children
}
</div>
)
}
};
export default Wrapper;
Однако, когда я использовал эту обертку внутри приемника контекста, реквизиты дочерних элементов все еще оцениваются, даже если для параметра LoadInitialState установлено значение true, а дочерние элементы не должны отображаться.
const Screen = () => {
<div>
<Context.Consumer>
{(context) => {
<Wrapper isLoadingInitialState={context.isLoadingInitialState} getInitialState={context.getInitialState)>
<ChildComponent price = {context.data.props}/> // throws an error because data is undefined
</Wrapper>
}}
</Context.Context>
}
Может кто-нибудь объяснить, почему реквизиты ChildComponents все еще оцениваются, даже если они не воспроизводятся? Есть ли лучшее решение для этого?