使用Next.js 如何在SSR 期间添加class 到body 或_next div?
Using Next.js how to add a class to body or _next div during SSR?
我有一个用例,在 SSR 期间,我必须向根元素添加一个 class,可能是 body 或 _next。 class 需要根据 getInitialProps 响应添加 conditionally/dynamically。
我想知道在 Next.js 的当前状态下是否可能这样做。
import React from "react";
import NextDocument, { Html, Head, Main, NextScript } from "next/document";
class Document extends NextDocument {
static async getInitialProps(ctx) {
const initialProps = await NextDocument.getInitialProps(ctx);
// Determine if class name should be added
return {
...initialProps,
shouldShow: true,
};
}
render() {
return (
<Html>
<Head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
{`#__next {
height: ${this.props.shouldShow ? "100%" : "0"}
}`}
</style>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default Document;
我有一个用例,在 SSR 期间,我必须向根元素添加一个 class,可能是 body 或 _next。 class 需要根据 getInitialProps 响应添加 conditionally/dynamically。 我想知道在 Next.js 的当前状态下是否可能这样做。
import React from "react";
import NextDocument, { Html, Head, Main, NextScript } from "next/document";
class Document extends NextDocument {
static async getInitialProps(ctx) {
const initialProps = await NextDocument.getInitialProps(ctx);
// Determine if class name should be added
return {
...initialProps,
shouldShow: true,
};
}
render() {
return (
<Html>
<Head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
{`#__next {
height: ${this.props.shouldShow ? "100%" : "0"}
}`}
</style>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default Document;