Задать вопрос
@tostershmoster

Как вынести переиспользуемый блок кода?

Такой компонент
const Comp = () => (
  <div>
    <ul>
      <li>
        <h2>Cap1</h2>
        <p>Text1</p>
      </li>
      <li>
        <h2>Cap2</h2>
        <p>Text2</p>
      </li>
    </ul>
  </div>
);


Сейчас в нём 2 li но может быть и больше, нужно вынести li в переиспользуемый блок. Не понятно только как правильно это сделать. На отдельный компонент в отдельном файле это как-то не тянет. Оставить его тут же, только выше?

const LiItem = () => {
  <li>
    <h2>Cap1</h2>
    <p>Text1</p>
  </li>
}

const Comp = () => (
  <div>
    <ul>
      constants.map(item => LiItem)
    </ul>
  </div>
);
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Решения вопроса 2
@chemdev
const data = [{header: "1", text: "1"}, {header: "2", text: "2"}]
const LiItem = ({header, text}) => (
  <li>
    <h2>{header}</h2>
    <p>{text}</p>
  </li>
)

const Comp = () => (
  <div>
    <ul>
      {data.map((el, idx) => <LiItem key={idx} header={el.header} text={el.text} />)}
    </ul>
  </div>
);
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега React
"Правильного" варианта тут нет, делайте как вам удобнее.

Я бы для такой простой штуки не стал заморачиваться и сделал так (детали с пропсами опущены):
const Comp = () => (
  <div>
    <ul>
      constants.map((item) => (
        <li>
          <h2>Cap1</h2>
          <p>Text1</p>
        </li>
      ))
    </ul>
  </div>
);


P.S. Если всё же разделять, я бы тег li оставил в родительском компоненте, а в отдельный вынес только его содержимое. Таким образом жёстко связанные в семантике html теги не будут разнесены потенциально по разным файлам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽