gpt4 book ai didi

preact - 在 SSR 中同时渲染多个 preact-router 路由(在 Vercel 上)

转载 作者:行者123 更新时间:2023-12-04 09:14:00 25 4
gpt4 key购买 nike

如果您在 https://startupguide.vercel.app/ 上访问我的 Preact 应用程序并单击“名称生成器”,您将只看到名称生成器表单(应该如此)。但是如果你去https://startupguide.vercel.app/namegenerator并刷新页面(以获取 SSR 页面),您首先会看到 Name Generator 表单,以及下方的 Start 页面(!)。
这是我设置 Preact 路线的方式:

import { Router } from 'preact-router'

import Start from './pages/Start'
import NameGenerator from './pages/NameGenerator'

const App = ({ prop }) => {
return (
<Router>
<Start path='/' />
<NameGenerator path='/namegenerator' />
<NameGenerator path='/namegenerator/:word1' />
<NameGenerator path='/namegenerator/:word1/:word2' />
</Router>
)
}
export default App
可能是什么问题呢?

最佳答案

/namegenerator页面实际上并没有被服务器渲染。如果您禁用 JavaScript 并加载页面,您将看到它只是主页内容。这会导致 SSR 不匹配,从而破坏水合作用。
要解决此问题,您可以通过创建 prerender-urls.json 来预渲染 namegenerator 页面。文件:

[
{
"url": "/",
"title": "Amazing Startup Guide"
},
{
"url": "/namegenerator",
"title": "Name Generator – Amazing Startup Guide"
}
]
然后更新您的 package.json “构建”脚本将该文件作为 --prerenderUrls 传递:
"scripts": {
"build": "preact build --prerenderUrls ./prerender-urls.json",
...
}
预渲染文档在这里: https://preactjs.com/cli/pre-rendering/#multiple-urls-and-custom-data

关于preact - 在 SSR 中同时渲染多个 preact-router 路由(在 Vercel 上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63297670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com