Как передать дочерние элементы маршрута в корневое приложение в SolidJS в машинописном тексте?

Я пытаюсь понять, как передать элементы маршрута в корневой элемент машинописного текста. Сейчас я использую "@solidjs/router": "^0.13.6". Вот демонстрация того, чего я хочу достичь. Я хочу выполнить маршрутизацию на основе конфигурации для своего проекта.

export const routes: RouteDefinition[] = [
  {
    path: '/',
    component: Home,
  },
]

const App: Component = (children: JSX.Element) => {
  return (
    <>
      <Navbar />
      <main>
        {children}
      </main>
      <Footer />
    </>
  );
}


render(
  () => (
    <Router root = {App}>
      {routes}
    </Router>
  ),
  root,
);

Это дает мне ошибки типа. Я понятия не имею, какие типы использовать и правильна ли вообще моя структура. App выдает мне эту ошибку:

Type '(children: JSX.Element) => JSX.Element' is not assignable to type 'Component'.
  Types of parameters 'children' and 'props' are incompatible.
    Type '{}' is not assignable to type 'Element'.

{children} выдает мне эту ошибку:

Property 'children' does not exist on type 'JSX.IntrinsicElements'

В чем ошибка?

Dogbert 24.06.2024 10:19

@Dogbert Я добавил ошибки

Dukhi Atma 24.06.2024 10:22
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Свойства компонента всегда являются объектом. Детям передается ключ children внутри объекта.
  2. В Solid не следует деструктурировать свойства, которые получает компонент, поскольку это нарушит реактивность. Вместо этого сделайте {props.children}.
  3. Тип Component по умолчанию не имеет дочерних элементов. Все свойства необходимо указать самостоятельно.

Окончательный код:

const App: Component<{children: JSX.Element}> = (props) => {
  return (
    <>
      <Navbar />
      <main>
        {props.children}
      </main>
      <Footer />
    </>
  );
}

Спасибо, это сработало! Также мне просто нужно было сделать одну дополнительную модификацию. const App: Component<{children?: JSX.Element}> = (props) => {

Dukhi Atma 24.06.2024 10:49

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