learn-reactjs icon indicating copy to clipboard operation
learn-reactjs copied to clipboard

Компонент возвращает null. Не тенарный оператор. Пример должен показать именно это.

Open bscheshirwork opened this issue 5 years ago • 2 comments

https://github.com/stsiushkevich/learn-reactjs/blob/d68443a7325434e0db97b802c2e5c11bd084bc18/src/main/webapp/WEB-INF/pages/basics/conditionalRendering/conditionalRendering.jsp#L125

  function DangerAlert(props) {
    return (
      <h3 className="alert alert-danger">{props.text}</h3>
    );
  }
          {this.state.isDangerAlertShowed ?
              <DangerAlert text={'Внимание! В приложении возникли некоторые проблемы!'} /> : null}

тогда как в https://ru.reactjs.org/docs/conditional-rendering.html#preventing-component-from-rendering

function WarningBanner(props) {
  if (!props.warn) {
    return null;
  }

  return (
    <div className="warning">
      Предупреждение!
    </div>
  );
}

        <WarningBanner warn={this.state.showWarning} />

bscheshirwork avatar Jun 26 '19 14:06 bscheshirwork

Здравствуйте! На самом деле пример на моём сайте и оригинал - оба отражают отрисовку компонента по условию. Я использовал тернарный оператор, так как компонент DangerAlert намеренно максимально прост и не содержит никаких условий. Я вынес это условие из него наружу. Условие, показывать DangerAlert или нет определяет именно внешний код. Тернарный оператор удобнее тем, что сокращает код.

Кстати, есть запись ещё короче:

{this.state.isDangerAlertShowed && <DangerAlert/>}

Именно такую запись я использую почти всегда в своём коде.

stsiushkevich avatar Nov 03 '19 23:11 stsiushkevich

На самом деле пример на моём сайте и оригинал - оба отражают отрисовку компонента по условию.

Насколько помню ситуацию (а помню плохо, за давностью), там нужно показать что возвращается, а не как делать удобнее

bscheshirwork avatar Nov 05 '19 08:11 bscheshirwork