|
Post by account_disabled on Jan 28, 2024 4:58:48 GMT -6
服务器必须渲染 React 代码两次,我们将仅用renderToString于此目的。我们希望维护第一次渲染和第二次渲染之间的上下文。在我们的第一次渲染中,我们试图排除任何 API 调用、承诺和异步操作。在第二次渲染时,我们希望获取我们获取的所有数据并将其放回到我们的上下文中,从而渲染出我们的工作页面以供分发。这也意味着应用程序代码需要根据上下文执行(或不执行)操作,例如是否在服务器上或客户端上,无论在哪种情况下是否正在获取数据。 此外,我们可以根据需要进行自定义。在这种情况下,我们根据上下文更改状态代码和头部。 第一次渲染 在代码内部,您需要知道您正在服务器或浏览器上工作,并且理想情况下您希望对其进行复杂的控制。 使用React Router,您可以获得一个静态上下文 prop,这很棒,所以我们将使用它。目前,我们刚 WhatsApp 号码数据 刚添加了一个数据对象和请求数据,正如我们从 Next.js 中了解到的那样。我们的服务器端和客户端的 API 是不同的,所以你需要提供一个服务器端 API,最好与你的客户端 API 有类似的接口哇,这是很多复杂的代码。在此阶段,您可能希望采用更多中继方法,将数据获取代码分离到另一个组件中。 该组件包含您可能熟悉的内容 - 渲染步骤和步骤componentWillMount。四阶段if语句处理不同的状态——预取、后取、保存器渲染、后服务器渲染。加载数据后我们还会添加到头部。 最后,还有获取数据的步骤。理想情况下,您的 API 和数据库具有相同的 API,这使得执行相同。 您可能希望将这些放入 Thunk 或 Saga 中的操作中,以使其更具可扩展性。 查看文章“服务器端 React 渲染”和 repo React 服务器端渲染以获取更多信息。请记住,您仍然需要处理数据未加载的状态!您只会在第一次加载时进行服务器渲染,因此您将在后续页面上显示加载屏幕。 加数据的更改 我们需要发送任何预取的数据作为页面请求的一部分,因此我们将添加一个脚本标签概括 如果您不确定自己在做什么,只需。
|
|