如何在多个文件中分解 REACTJS 中的 Axios 调用?

Posted

技术标签:

【中文标题】如何在多个文件中分解 REACTJS 中的 Axios 调用?【英文标题】:How to break up an Axios call in REACTJS in multiple files? 【发布时间】:2019-11-12 06:37:15 【问题描述】:

我的项目正在多个文件中进行 Axios 调用,我想对其进行调制并将调用作为道具传递给需要它的其他文件。

这是我的 componentDidMount() 方法,它有调用:

 componentDidMount () 
 document.body.style = 'background: #b8bab2;'
// Retrieve projects data
 axios.get('/env?var=READER_HOSTNAME').then(response => 
  return axios.get(`$response.data.var/graphql?query=$queries.allProjects()`)
 ).then(response => 
  this.setState(
    projects: response.data.data.projects,
    visible: response.data.data.projects,
    isLoaded: true
  )
 )

【问题讨论】:

【参考方案1】:

您可以创建一个higher order component。

import React,  Component  from 'react'

export default withData = MyComponent => 
  return class MyComponentWithData extends Component 
    state =  projects: null, visible: null, isLoaded: false 

    componentDidMount() 
      // Retrieve projects data
      axios.get('/env?var=READER_HOSTNAME')
        .then(response => 
          return axios.get(`$response.data.var/graphql?query=$queries.allProjects()`)
        ).then(response => 
          const  projects  = response.data.data
          this.setState(
            projects,
            visible: projects,
            isLoaded: true
          )
        )
    

    render() 
      const  projects, visible, isLoaded  = this.state
      if (!isLoaded) 
        return null
      
      return (
        <MyComponent
          ...this.props
          projects=projects
          visible=visible
          isLoaded=isLoaded
        />
      )
    
  

withData 导入到您要使用的组件中,如下所示:

class SomeComponent extends Component 
  // ... component code

export default withData(SomeComponent)

【讨论】:

以上是关于如何在多个文件中分解 REACTJS 中的 Axios 调用?的主要内容,如果未能解决你的问题,请参考以下文章

在 spark 中分解多个数组列以更改输入模式

我们可以使用 IN 语句在多个查询中分解 SQL 连接吗

如何使用 ReactJs 中的 dropzone 将文件及其描述添加到状态?

ReactJS 中的参数路由不显示 UI 组件

iOS:如何在一个数组中的多个字典中分隔键值?

Spark:如何在 pyspark 或 scala spark 中分解数据并添加列名?