ユーザーがgithubのユーザー名を検索し、ユーザーのフルネーム、ログイン名、国名を確認できる単一のファイルコンポーネントにVueアプリケーションがあります。vue-axios `catch`関数が予期したときに起動しない
<template>
<div id="app">
<form @submit.prevent="search">
<input v-model="username" />
</form>
<p v-if="data">
{{ data.name }} ({{ data.login }})
is from
{{ data.location }}!
</p>
</div>
</template>
<script>
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
export default {
data() {
return {
username: '',
data: []
}
},
methods: {
search() {
const api = `https://api.github.com/users/${this.username}`
Vue.axios.get(api).then((response) => {
this.data = response.data
}).catch(error => {
console.log(error)
})
}
}
}
</script>
私の問題は次のとおりです:私は、ユーザーがgithubのに存在しないユーザーを入力している状況に対処する方法を見つけることができません
は、ここに私のコンポーネントです。 catch
のaxiosの約束で、私はそのエラーがコンソールに記録されると予想しますが、そうではありません。私がこの機会を処理できる理由は、何も検索されていないか、無効な検索が行われたときにプレースホルダーのテキスト() is from !
が欲しくないということです。
私はv-if
のチェックのためにちょうどdata
の代わりにdata.length
を使用しようとしましたが、これは私のコンポーネントが '反応しない'ようです。私はVueのdevツールでデータの変更を見ることができますが、コンポーネントには反映されていません。ここで何が起こっているのでしょうか?あなたはエラー変数に「.response」を置く必要http://www.webpackbin.com/VJlfcrGLM
この回答は非常に混乱しています。 •チェックが 'data'から' data.name'に変更されたのはなぜですか? • 'name'が' null'のユーザーを検索すると、予期しないエラーメッセージの代わりにデータオブジェクトが表示されます。 •Webpackbinの例では、promiseの 'then'部分と' catch'部分の両方に同様のコンソールエラーがあります。そこには何が起こっているのですか? •Webpackbinのサンプルは私のために読み込まれないようですが、エラーはありません。 • 'data'に' errorMsg'値を設定し、その値を 'else'ブロックに使用するのではなく、' data'をエラーメッセージに設定するのはなぜですか? – alanbuchanan
@alanbuchananチェック[this](http://www.webpackbin.com/EJ_P_rX8G)。 – Saurabh