Как передать в качестве пропс другой компонент?

Выходит ошибка

Objects are not valid as a React child (found: object with keys {$$typeof, type, compare}). If you meant to render a collection of children, use an array instead.


const Header = props => (
    <div className="navHeader">
      {props.top}
    </div>
  );

  
export const Top = React.memo(props => (
  <div className="top">
    <div className="site-identifier">
      <Logo />
      <Link to="/">
        Привет
      </Link>
    </div>
    {props.children}
  </div>
));

вызывается в App

import Header, { Top } from "./views/header";
<Header top={Top}/>

Компонент Top надо передать пропсами.
  • Вопрос задан
  • 2453 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега React
const Header = ({ Top }) => (
  <div className="navHeader">
    <Top />
  </div>
);

...

<Header Top={Top} />
Ответ написан
rockon404
@rockon404 Куратор тега React
Frontend Developer
Рассмотрите вариант:
const Header = ({ children }) => (
    <div className="navHeader">
      {children}
    </div>
  );


<Header>
  <Top />
</ Header>


Можно еще решить как-то так:
const Header = ({ top }) => {
  const HeaderTop = top || Top;
  
  return (
    <div className="navHeader">
      <HeaderTop />
    </div>
  );
};

Тогда у вас будет компонент по-умолчанию, а свойство top можно будет использовать только там, где необходимо использовать другой компонент.
<Header /> // используем компонент по-умолчанию Top

<Header top={OtherTopCompnent} /> // используем другой компонент
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы