如何从获取响应中更新对象数组

时间:2019-06-25 12:17:43

标签: node.js reactjs setstate

基于其他问题,我尝试了很多事情,但是我没有弄清楚该怎么做。

我的组件构造函数中有这个数组:

 testDependeciesArr:[]

当用户单击我的React组件的按钮“测试依赖项”时,我将调用此函数:

testDependencies() {
    axios.get(process.env.REACT_APP_HOST + '/testDependencies')
      .then(resp => {
        this.setState(
          { testDependeciesArr: how to update this Array  }
          )

      })
      .catch(function (error) {
        console.log(error)
      })
  }

该函数向nodejs发出请求,并向我返回:

{0: {…}, 1: {…}, 2: {…}}
    0:
    responseTime: "21ms"
    responseStatus: "OK"

    1:
    responseTime: "2739ms"
    statusText: "OK"

    2:
    responseError: {message: "request to http:url failed, reason: connect ECONNREFUSED 100.100.100.100:80", type: "system", errno: "ECONNREFUSED", code: "ECONNREFUSED"}
    responseTime: "10ms"

那么,如何使用从节点响应中获得的3个对象来更新数组testDependeciesArr?

设置状态后,应该更新此表:

API  Response Time  StatusDetail
API1    21ms          OK
API2    2739ms        OK
API3    21ms        request to http:url failed, reason: connect ECONNREFUSED 100.100.100.100:80", type: "system", errno: "ECONNREFUSED", code: "ECONNREFUSED

2 个答案:

答案 0 :(得分:3)

您可以利用Object.values()

const res = {
  0: {
      responseTime: "21ms",
      responseStatus: "OK"
     },

 1:  {
      responseTime: "2739ms",
      statusText: "OK"
     },

 2: {
    responseError: {
      message: "request to http:url failed, reason: connect ECONNREFUSED 100.100.100.100:80", type: "system",
      errno: "ECONNREFUSED", code: "ECONNREFUSED"},
    responseTime: "10ms"
    }
};


console.log(Object.values(res));

因此,在您的代码中:

testDependeciesArr: Object.values(resp)

答案 1 :(得分:1)

尝试一下:

testDependencies() {
    axios.get(process.env.REACT_APP_HOST + '/testDependencies')
      .then(resp => {

        this.setState(
          { testDependeciesArr: Object.values(resp)}
          )

      })
      .catch(function (error) {
        console.log(error)
      })
  }