javascript - 如何在 React 函数组件中调用 API?

标签 javascript reactjs api

我有一个场景需要在 React 函数组件中调用 API。如果可能如何返回结果。我可以调用 API,但响应在变量中可用。请指教

我的示例代码

import React from 'react';
import ReactTable from 'react-table'
import 'react-table/react-table.css'
import axios from 'axios';

const Table = (props) => {
  const getData = [axios.get("https://lq-time- 
    tracking.firebaseio.com/user.json").then(function(response) {
        console.log(response);
      }).catch(function(error) {
        console.log(error);
      })]    

 const data = [{getData}];       
 const columns = [{
    id: 'Name',
    Header: 'Name',
    accessor: data.user
  }, {
    Header: 'Date',
    accessor: 'Date',
  }, {
    Header: 'Comment',
    accessor:'Comment' 
  }]

  return <ReactTable
    data={...data}
    columns={columns}
    pivotBy={ ['Date', 'Name']}
  />
}       
export default Table;

最佳答案

您可能需要使用几个钩子(Hook); useEffect 进行 API 查询,useState 存储数据。 useEffect Hook 中的空依赖项数组将确保仅在组件安装时才进行 API 调用。然后,当调用解决时,数据被设置为一个名为 data 的有状态变量。

import React, { useEffect, useState } from 'react';
import ReactTable from 'react-table'
import 'react-table/react-table.css'
import axios from 'axios';

const Table = (props) => {
  const [data, setData] = useState({});

  useEffect(() => {
    axios.get("https://lq-time-tracking.firebaseio.com/user.json")
      .then(function(response) {
        setData(response.data);
      }).catch(function(error) {
        console.log(error);
      })
  }, []);

  const columns = [{
    id: 'Name',
    Header: 'Name',
    accessor: data.user
  }, {
    Header: 'Date',
    accessor: 'Date',
  }, {
    Header: 'Comment',
    accessor:'Comment' 
  }]

  return <ReactTable
    data={...data}
    columns={columns}
    pivotBy={ ['Date', 'Name']}
  />
}

export default Table;

关于javascript - 如何在 React 函数组件中调用 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58848247/

相关文章:

json - 多个发货日期的 UPS Rates API 问题

javascript - js迁移问题

javascript - 如何在 React 中正确实现后退按钮?

Javascript 对象变量名称作为数字

reactjs - 阻止 FlowType 检查 node_modules 中的错误

javascript - 从 Promise 设置对象数组

linux - 'Kubectl' 在使用 docker 安装时抛出错误 'failed to negotiate an api version'

api - API 的安全客户端 token 身份验证

javascript - 如何从 TinyMCE 中删除 MenuItemTitle?

javascript - react : onChange not updating value to input field