Как сбросить axios.post для нескольких запросов? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть кнопка, которая вызывает axios.post к конечной точке API.Кнопка срабатывает при первом использовании (console.log(res.data.userdata[0].txHash) успешно).

Если я изменю состояние (this.state.hashOutput) и снова нажму кнопку, появится ошибка Uncaught (in promise) TypeError: Cannot read property 'txHash' of undefined.На сервере нет ошибок.

код:

  handleOnClick() {
      const searchValue = this.state.hashOutput;
      axios.post("https://myapi.net/searchDB", {
          searchValue: searchValue
        })
        .then(res => {
          console.log(res.data);
        }).catch(err => console.log(err));
    }
  }

Есть мысли?Я не знаю, с чего начать это исследование.Спасибо!

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

Вы уверены, что ответ содержит массив данных или один объект?В любом случае, рекомендуется проверять, прежде чем получить доступ к таким значениям.

  handleOnClick() {
      const searchValue = this.state.hashOutput;
      axios.post("https://myapi.net/searchDB", {
          searchValue: searchValue
        })
        .then(res => {
          console.log(res.data.userdata && res.data.userdata[0] && res.data.userdata[0].txHash);  // make sure the value is available before accessing the property 
        });
    }
  }

Каждый пост является независимым, и вам не нужно будет reset, как указано в посте.Попробуйте сначала войти res.

0 голосов
/ 06 февраля 2019

txHash - это свойство res.data.userdata[x], как показано в вашей программе, и в ошибке четко указано, что Cannot read property 'txHash' of undefined, ergo, res.data.userdata[x] не определено, что означает, что в результате поиска, полученного с сервера, не былоданные, которые, в свою очередь, означают, что ваши параметры поиска не соответствуют никаким значениям в базе данных, поэтому это случай «результатов поиска не найден» и не должен вызывать каких-либо ошибок на стороне сервера, что имеет место.Вы должны поставить чек на стороне интерфейса и обработать его соответствующим образом.

Зарегистрируйте результат следующим образом и проверьте результат для себя:

console.log("Data: ", res.data);
0 голосов
/ 06 февраля 2019

Я не уверен, но посмотрим, связывали ли вы функцию handleOnClick в конструкторе.Иногда это может привести к неопределенной ошибке.

this.handleOnClick=this.handleOnClick.bind(this);

Пожалуйста, проверьте.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...