У меня есть компонент 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 все работает, как и ожидалось.
Имя @FatehMohamed — это простая строка, как указано в компоненте Foo.
Функции слота Astro работают на стороне сервера, но React работает на стороне клиента, вы не можете передавать функции на стороне сервера компонентам на стороне клиента, только HTML
Но если я использую client:only = "react", компонент не будет отображаться на сервере, но будет отображаться на клиенте при загрузке страницы в соответствии с документами Hydrating Interactive Components. Значит, функция будет работать только на клиенте, верно?
Тип гидратации не имеет значения, функции на стороне сервера не могут быть сериализованы в функции на стороне клиента.
Какое имя здесь, это тип элемента, такой как «h1»? или ключ к reactNode