Как я могу обновить массив объектов из ответа выборки - PullRequest
1 голос
/ 25 июня 2019

Я пробовал много вещей, основываясь на других вопросах, но я не понял, как это сделать.

У меня есть этот массив в конструкторе компонентов:

 testDependeciesArr:[]

Когда пользователь нажимает кнопку «Проверить зависимости» моего компонента реагирования, я вызываю эту функцию:

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"

Итак, как мне обновить массив 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 ]

3 голосов
/ 25 июня 2019

Вы можете воспользоваться 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 голос
/ 25 июня 2019

Попробуйте это:

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

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

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