Как показать/скрыть компоненты ReactJS

Попытка узнать ReactJS.. но меня смущает рендеринг компонента. Каждый пример, который я видел, определяет класс компонента React и в конце имеет что-то вроде:

React.renderComponent(
  <comp attr="value"" />,
  document.getElementById('comp')
);

Я понимаю, что он заменяет элемент "comp" моим компонентом.. это здорово. Но кажется, что если я загружу 20 компонентов, все 20 рендеринга. Тем не менее, я хочу только сделать некоторые и не все, но использовать все в течение всего моего SPA. Я использую маршрутизатор DirectorJS, и в зависимости от того, входит ли пользователь в систему или нет, и/или переходит к определенным ссылкам, я хочу показывать только один или несколько компонентов. Кажется, я не могу найти какую-либо информацию/примеры/обучающие материалы о том, как динамически управлять отображением или скрытием реагирующих компонентов. Более того, то, что я действительно хотел бы сделать, это частичные части загрузки в зависимости от ссылок, которые были нажаты, и в тех частицах, в которых они будут использовать реагирующие компоненты, поэтому только в это время загружать/использовать компонент. Возможно ли это... так как я могу справиться с этим? Я мог бы жить с загрузкой 20+ компонентов один раз при первом загрузке приложения, но я бы предпочел загружать их только при загрузке частичного компонента.

Ответы

Ответ 1

Сначала сделайте только то, что необходимо. Легче отслеживать и быстрее.

Фактически "обмениваться между страницами", это так же просто, как, например, установить переменную в вашем состоянии/реквизитах и ​​использовать этот var, чтобы условно отобразить все, что вам нужно. Роль выборочного рендеринга в том, что вы хотите, естественно, относится к родительскому компоненту. Здесь работает скрипка с директором: http://jsfiddle.net/L7mua/3/

Ключевая часть, в приложении:

render: function() {
  var partial;
  if (this.state.currentPage === 'home') {
    partial = <Home />;
  } else if (this.state.currentPage === 'bio') {
    partial = <Bio />;
  } else {
    // dunno, your default page
    // if you don't assign anything to partial here, you'll render nothing
    // (undefined). In another situation you'd use the same concept to
    // toggle between show/hide, aka render something/undefined (or null)
  }
  return (
    <div>
      <div>I am a menu that stays here</div>
      <a href="#/home">Home</a> <a href="#/bio">Bio</a>
      {partial}
    </div>
  );
}

Обратите внимание, что помимо синтаксиса JSX, выглядящего в стиле HTML, вы действительно используете JavaScript. Условные все еще работают, итерации все еще работают и т.д.