javascript - 如何使用 Material-ui 为 React Next 应用程序添加 CSS 服务器端渲染
问题描述
我有一个在 Next.js 中构建的简单 React 应用程序,它正在运行一个快速服务器:
app.prepare()
.then(() => {
const server = express()
server.get('/job/:id', (req, res) => {
const actualPage = '/job'
const queryParams = { id: req.params.id }
app.render(req, res, actualPage, queryParams)
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(3000, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:3000')
})
})
.catch((ex) => {
console.error(ex.stack)
process.exit(1)
})
我也有用于材质样式组件的Material-UI,并且需要确保组件得到服务器端渲染。
我已尝试按照本教程进行操作,但似乎无法使代码适应在 Next.js 中设置 Express 服务器的方式
我相信我基本上需要添加某种JssProvider
将运行服务器端和客户端的东西,以便两者都可以访问样式表。如果我错了,请纠正我?
有人知道如何在 Next 中实现这一点吗?
如果有人有一个使用 SSR Material-ui 设置的 Next.js 示例应用程序的链接,那也将是一个巨大的帮助。
谢谢
解决方案
I think this could be the same problem I helped to solve in this question. He was using NextJS too. You could add a JssProvider like this:
import JssProvider from "react-jss/lib/JssProvider";
class App extends Component {
render() {
<JssProvider>
*the rest of your material-ui components*
</JssProvider>
}
}
推荐阅读
- c++ - C++ 函数已经有一个主体
- python - 如何使用 Docker 从 Github 运行这个特定的程序?
- php - Symfony Panther && Docker (Alpine) chrome 不断崩溃
- php - 可以将 2 种不同类型的参数传递给 Laravel 控制器吗?
- openacc - OpenACC 第一个私有变量
- java - Spring Batch @JobScope bean 创建错误“已定义具有该名称的 bean”
- ios - 在导航栏中的文本字段上方放置标签
- c# - Blazor 服务器组件未在 ASP.NET MVC 应用程序上呈现
- spring-boot - 套接字关闭异常和控制从未返回
- r - ks.test 中的错误来自于累积分布函数不是真的,因为离散分布在 R 中没有内置函数