ReactJS и как повторно использовать общие компоненты

Я делаю веб-приложение с ReactionJS и MOBX, и у меня есть несколько вопросов о том, как я должен повторно использовать свои компоненты, и какой способ наиболее эффективен. Моя проблема в том, что у меня есть много компонентов, которые разделяют многие другие компоненты. Например, у меня есть несколько страниц, таких как (Домашняя страница, О программе, Справка и т. Д.), И они являются отдельными компонентами, а также соответственно содержат компоненты "Верхний колонтитул", "Нижний колонтитул" и "Содержимое" (из которых верхний и нижний колонтитулы являются компонентами с состоянием, поскольку пользователь может изменить язык), но для моего веб-сайта каждая страница имеет одинаковый верхний и нижний колонтитулы, поэтому каждая страница импортирует и отображает один и тот же верхний и нижний колонтитулы. У меня вопрос, если это эффективный способ, или есть какой-то другой способ, например, сохранить компоненты заголовка и нижнего колонтитула в каком-то месте, и изменить каким-то образом только содержимое, а не импортировать заголовок и нижний колонтитул каждый раз?

1 ответ

У вас может быть компонент "Layout.jsx", в котором есть верхний и нижний колонтитулы, а также компонент "Сменный контент", который будет переключаться между "Домой", "О программе" и т. Д. В зависимости от маршрута, в котором вы находитесь.

Если вы уже используете React Router (который я настоятельно рекомендую), вы можете добиться этого, вложив другие маршруты в маршрут для макета:

import React from "react";
import {IndexRoute, Route} from 'react-router';
import Layout from "Layout.jsx";
import Home from "Home.jsx";
import Help from "Help.jsx";
import NotFound from "NotFound.jsx";

export default () => {
  return (
    <Route path="/" component={Layout}>
      { /* Home (main) route */ }
      <IndexRoute component={Home}/>

      { /* Routes */ }
      <Route path="about" component={About}/>
      <Route path="help" component={Help}/>

      { /* Catch all route */ }
      <Route path="*" component={NotFound} status={404} />
    </Route>
  )
}
Другие вопросы по тегам