@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>
);
  • Вопрос задан
  • 95 просмотров
Решения вопроса 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 теги не будут разнесены потенциально по разным файлам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
28 апр. 2024, в 20:14
700 руб./за проект
28 апр. 2024, в 20:09
9000 руб./за проект
28 апр. 2024, в 19:54
2000 руб./за проект