[axios]同步选项

2024-05-15 665 views
4

我需要启用同步加载的选项。我想axios在服务器上使用 React

回答

1

您想发出同步请求吗?为什么这不能是异步的?我知道人们正在以这种方式使用 React + axios 进行服务器渲染。

1

@mzabriskie 你能帮我吗?

9

或者给我一个关于 React ssr+axios 项目的链接

1

我不知道如何停止渲染,直到所有请求都得到解决。我提出请求componentWillMount()

2

使用 axios.all 来管理您的调度,而不是针对每个结果进行调度。

0

@LestaD 解决这个问题的方法是将您需要执行的所有请求声明为反应组件中的静态数组属性。

像这样的事情:

class Home extends React.Component {

  static dataDependencies = [
    fetchHome
  ]

  componentDidMount() {
    const { dispatch } = this.props
    dispatch(fetchHome())
  }

  render() {
    ...
  }
}

然后,您可以在后端服务器中编写一个函数来执行如下操作:

const reqs = Home.dataDependencies.map((req) => ...)
Promise.all(reqs).then(function() {
  renderToString...
})
4

@nettofarah 很好的解决方案

8

@mzabriskie 你能为这个问题提供一个内置的解决方案吗?我知道所有 AJAX 调用都应该是异步的,但我所处的情况是,在响应到达之前,程序的控制不应继续。更具体地说,我需要在响应到达同一组件的 componentWillMount() 之前停止执行渲染函数。

4

好的。然后我做了一个应用程序,它只:

  • 得到一个令牌
  • 使用请求的令牌向 api 发送 ping
  • 可能会收到一些特殊的响应,该响应将传递给另一个进程。

所以不需要任何异步的东西,而且我不在浏览器上。

为什么我应该用异步关键字污染我的代码来制作一些简单的同步代码?

我的意思是,使用 async 关键字来解决我不需要解决的问题?

你喜欢污染吗?