Реактивный реквизит оценивается, даже если компонент все еще предполагается визуализированным - PullRequest
0 голосов
/ 29 июня 2018

У меня есть оболочка для моих компонентов, которая говорит им не отображать, пока они не завершат загрузку, которая выглядит следующим образом

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 все еще оцениваются, даже если они не воспроизводятся? Есть ли лучшее решение для этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...