【发布时间】:2019-12-14 01:31:07
【问题描述】:
我们知道 Router.push() 会触发客户端渲染。 但是如何以编程方式触发服务器端渲染到页面呢?
示例:我有一个登录模式,在提交时会发送一个 api 调用来检查用户数据。一旦我得到用户正常的信息,我想加载一个页面,但通过服务器端呈现。
【问题讨论】:
标签: next.js
我们知道 Router.push() 会触发客户端渲染。 但是如何以编程方式触发服务器端渲染到页面呢?
示例:我有一个登录模式,在提交时会发送一个 api 调用来检查用户数据。一旦我得到用户正常的信息,我想加载一个页面,但通过服务器端呈现。
【问题讨论】:
标签: next.js
如果您想在服务器端呈现页面,则无法使用 Router 或 Link 导航到该页面 - 您应该使用本机 a 或 window.location 功能。在您的情况下,在您从 API 获得响应后,您希望触发重定向(就像用户单击了链接一样),因此您应该调用:
window.location.href = "https://{yourDestination}"
这将强制向服务器发出请求。正如您所经历的,Router 和 Link 试图将所有内容都保留在客户端。
【讨论】: