如何将 bootstrap 添加到 NextJS
How to add bootstrap to NextJS
我在使用 mdbreact 包时遇到了问题,因为当我添加一些组件(如按钮等)时出现错误:"Window is not defined"。我进行了研究,发现 window 对象仅在客户端定义。
是否可以将 Bootstrap 添加到 NextJS???
更新答案 (2020)
react-bootstrap 从 v1.0 开始支持 SSR
来源:https://github.com/react-bootstrap/react-bootstrap/issues/3569
过时的答案 (2018)
在撰写本文时,只有一种 "clean" 方法:使用 Dynamic Components 为这些组件禁用 SSR。
import dynamic from 'next/dynamic'
const ButtonWithNoSSR = dynamic(import('react-bootstrap/lib/Button'), {
ssr: false
})
"dirty" 方法是通过模拟 window 对象使 react-bootstrap 支持 SSR。
如果你想使用 bootstrap cdn,你可以简单地在 nextjs 中使用 _app.js 或 _document.js 文件。
以下是我如何通过 _document.js
将 bootstrap cdn 链接到我的 nextjs 项目
import Document, { Html, Head, Main, NextScript } from "next/document";
class MyDocument extends Document {
render() {
return (
<Html>
<Head>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
crossorigin="anonymous"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
了解更多 _document.js click here。
您也可以以类似的方式使用 _app.js。有关 _app.js check this out.
的更多信息
我在使用 mdbreact 包时遇到了问题,因为当我添加一些组件(如按钮等)时出现错误:"Window is not defined"。我进行了研究,发现 window 对象仅在客户端定义。 是否可以将 Bootstrap 添加到 NextJS???
更新答案 (2020)
react-bootstrap 从 v1.0 开始支持 SSR
来源:https://github.com/react-bootstrap/react-bootstrap/issues/3569
过时的答案 (2018)
在撰写本文时,只有一种 "clean" 方法:使用 Dynamic Components 为这些组件禁用 SSR。
import dynamic from 'next/dynamic'
const ButtonWithNoSSR = dynamic(import('react-bootstrap/lib/Button'), {
ssr: false
})
"dirty" 方法是通过模拟 window 对象使 react-bootstrap 支持 SSR。
如果你想使用 bootstrap cdn,你可以简单地在 nextjs 中使用 _app.js 或 _document.js 文件。
以下是我如何通过 _document.js
将 bootstrap cdn 链接到我的 nextjs 项目import Document, { Html, Head, Main, NextScript } from "next/document";
class MyDocument extends Document {
render() {
return (
<Html>
<Head>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1"
crossorigin="anonymous"
/>
</Head>
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
export default MyDocument;
了解更多 _document.js click here。
您也可以以类似的方式使用 _app.js。有关 _app.js check this out.
的更多信息