Astro, React — дети — это не функция

У меня есть компонент React, в котором я возвращаю дочерние элементы как функцию и передаю данные. Я использую это на странице Astro.

Фу

type Props = {
  children: (name: string) => JSX.Element;
};

function Foo({ children }: Props) {
  return children("foo");
}

Применение

<Foo client:load>
  {(name: string) => <div>Hello from {name}</div>}
</Foo>

Я получаю эту ошибку при попытке так.

Uncaught TypeError: children is not a function

При использовании <Foo client:only> возникает та же ошибка.

При использовании этого компонента Foo с «простым» React все работает, как и ожидалось.

Какое имя здесь, это тип элемента, такой как «h1»? или ключ к reactNode

Fateh Mohamed 14.02.2023 11:53

Имя @FatehMohamed — это простая строка, как указано в компоненте Foo.

RubenSmn 14.02.2023 11:55
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Создание микрофронтендов с Angular и федерацией модулей в монорепо: Пошаговое руководство
Микрофронтенды стали популярным архитектурным паттерном для веб-разработки. С появлением федерации модулей в Webpack 5 реализация микрофронтендов...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Руководство для начинающих по веб-разработке на React.js
Руководство для начинающих по веб-разработке на React.js
Веб-разработка - это захватывающая и постоянно меняющаяся область, которая постоянно развивается благодаря новым технологиям и тенденциям. Одним из...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Функции слота Astro работают на стороне сервера, но React работает на стороне клиента, вы не можете передавать функции на стороне сервера компонентам на стороне клиента, только HTML

Но если я использую client:only = "react", компонент не будет отображаться на сервере, но будет отображаться на клиенте при загрузке страницы в соответствии с документами Hydrating Interactive Components. Значит, функция будет работать только на клиенте, верно?

RubenSmn 14.02.2023 19:49

Тип гидратации не имеет значения, функции на стороне сервера не могут быть сериализованы в функции на стороне клиента.

Bryce Russell 14.02.2023 20:32

Другие вопросы по теме