javascript - 使用 React SSR 时如何仅发出一个 API 请求?

标签 javascript reactjs api server-side-rendering

我的应用程序必须进行 API 调用,该调用返回一个项目数组,这些项目被设置样式并呈现到屏幕上。为了使我的 SSR 渲染工作,我当然必须在服务器上发出 API 请求,但是在使用 SSR 时,您还必须在客户端上重新渲染(使用 ReactDOM.Hydrate),我在这里发出第二个 API 请求。

由于API请求需要2秒以上,所以执行2次效率很低。是否有解决方法,只需执行 1 个请求并以某种方式使用服务器和客户端上的数据?

最佳答案

This is how you fetch data on a server and reuse it on client - 直接来自 redux 文档。如果您不使用 redux,则需要实现非常类似的东西。

回答后一个问题 - 如何避免向客户端发出另一个请求?您只需要检查数据是否存在:)

componentDidMount() {
  if(!this.props.isDataFetched) {
    this.props.fetchData();
  }
}

或者也许...

componentDidMount() {
  if(this.props.data.length === 0) {
    this.props.fetchData();
  }
}

关于javascript - 使用 React SSR 时如何仅发出一个 API 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49412079/

相关文章:

javascript - 让用户导入 excel 文档,然后用它填充页面

reactjs - React 组件未显示在匹配的路由上(react-router-dom)

javascript - 如果React.js是MVC中的V,那么其他字母是什么?

c# - 如何开始在 .NET 中创建应用程序 API

javascript - 将 JSON 从 Contentful 获取到 Mustache

javascript - 如何使用 javascript 或 jquery 在单击时在任何 css 属性之间切换?

javascript - 在 jquery 中选项卡可见后执行某些操作

javascript - 尝试将 React-DateRangePicker 集成到 React 项目时出错

windows - 无法从 WinApi crate 调用 CryptDecrypt,因为它找不到模块

javascript - 如何在dom元素中添加扩展方法