Передача компонентов как дочерних в React: методы и примеры

В React передача компонентов как дочерних — распространенный шаблон, позволяющий создавать гибкий и многократно используемый код. Для этого можно использовать несколько методов:

  1. Использование свойства Children: компоненты React могут иметь специальный реквизит под названием «дети», который позволяет передавать компоненты как дочерние. Вот пример:
function ParentComponent() {
  return (
    <div>
      <h1>Parent Component</h1>
      <ChildComponent />
    </div>
  );
}
function ChildComponent() {
  return <p>Child Component</p>;
}

В этом примере ChildComponentпередается как дочерний элемент ParentComponent, просто помещая его между открывающим и закрывающим тегами ParentComponent.

  1. Использование пользовательского свойства: вы также можете определить свой собственный реквизит и передать ему компонент. Это может быть полезно, если вы хотите передать дочернему компоненту дополнительные реквизиты. Вот пример:
function ParentComponent() {
  return (
    <div>
      <h1>Parent Component</h1>
      <ChildComponent customProp={<NestedComponent />} />
    </div>
  );
}
function ChildComponent(props) {
  return <div>{props.customProp}</div>;
}
function NestedComponent() {
  return <p>Nested Component</p>;
}

В этом примере NestedComponentпередается как свойство с именем customPropв ChildComponent.

  1. Использование функции карты. Если вам нужно передать несколько компонентов в качестве дочерних, вы можете использовать функцию mapдля перебора массива и визуализации каждого компонента. Вот пример:
function ParentComponent() {
  const components = [<ChildComponent key={1} />, <ChildComponent key={2} />];
  return (
    <div>
      <h1>Parent Component</h1>
      {components.map((component, index) => (
        <div key={index}>{component}</div>
      ))}
    </div>
  );
}
function ChildComponent() {
  return <p>Child Component</p>;
}

В этом примере ParentComponentсоздает массив экземпляров ChildComponentи использует функцию mapдля визуализации каждого из них.