reactjs - Hur använder jag doctype och html-taggar i en React-komponent?


Jag försöker göra SSR med Bun och jag vill ha en Layout-komponent som jag använder som bas för mina sidor.

Här är min Index-sidokomponent:

import { useState } from "react";
import Layout from "../components/Layout";

export const render = () => {
  const [count, setCount] = useState(0);

  const increment = () => {
    setCount(count + 1);
  };

  return (
    <Layout>
      <h1>index</h1>
      <p>the count is {count}</p>
      <button onClick={increment}>increment</button>
    </Layout>
  );
};

Här är min Layout-komponent:

import type { ReactNode } from "react"

export default (props: { children : ReactNode }) => {
    return (
        <>
            <!doctype html>
            <html>
                <head>
                    <meta charset="UTF-8">
                    <meta name="viewport" content="width=device-width, initial-scale=1.0">
                    <link href="./output.css" rel="stylesheet">
                </head>
                <body>
                    {props.children}
                </body>
            </html>
        </>
    )
}

När jag kör servern och försöker besöka sidan får jag följande fel:

BuildError: Förväntat identifierare men hittade "!" I app/components/Layout.tsx:6:14

            <!doctype html>

BuildError: Förväntade ">" men hittade "" I app/components/Layout.tsx:6:15

            <!doctype html>

BuildError: Syntaxfel!! I app/components/Layout.tsx:19:12

        </>

VSCode ger mig också detta lintfel:

JSX-fragmentet har ingen motsvarande avslutande tagg.

Hur kan jag ha doctype och html-taggar i min Layout-komponent?

Svar #1

Jag listade ut att renderToReadableStream automatiskt lägger till doctype till komponenten, så jag kan bara använda mitt ursprungliga exempel utan doctype-taggen och det fungerar utmärkt.