【发布时间】:2019-08-18 23:11:00
【问题描述】:
是否可以在 Next.js 中强制执行 SSR-only 模式,并且只对页面进行部分水合?假设我有这个应用程序:
components/dynamic.jsx
export default () => (
<button onClick={() => console.log("I have been clicked")}>Click me</button>
)
pages/index.jsx
import DynamicComponent from "../components/dynamic.jsx";
export default () => (
<div>
<h1>Hello World</h1>
<p>Lorem ipsum</p>
<Hydrate>
<DynamicComponent />
</Hydrate>
</div>
);
现在假设我们正在渲染pages/index.jsx 和Next.js,因此它将在服务器上渲染并在客户端完全水合。出于性能原因(缩小捆绑包大小,减少执行时间)并让应用程序在广告中播放得更好(????)我只想在客户端上补充DynamicComponent,充其量只加载@987654329的JavaScript @给客户。
这可能吗
- 反应?
- Next.js?
谢谢
【问题讨论】:
-
检查 process.browser 是否需要仅在客户端上呈现的组件。这行得通吗?
-
spring-media 正在为此工作,显然:github.com/spring-media/next-super-performance
-
@maosmurf 实际上是……我 :)
-
@lukas ;) 现在,我也很高兴能够在动态页面上进行 API 调用 stackoverflow.com/a/58196267/671373
-
是的,类似的东西似乎也成为了 React 本身的一部分 addyosmani.com/blog/rehydration