我正在尝试使用Axios从API端点GET
进行响应,但是什么都没回来。
我尝试过将Axios调用放入组件和Vuex存储中,但到目前为止还没有运气。
store.js
import Vue from "vue";
import Vuex from "vuex";
import axios from "axios";
import VueAxios from "vue-axios";
Vue.use(Vuex);
Vue.use(VueAxios, axios);
export default new Vuex.Store({
state: {
similarTitles: []
},
mutations: {
SIMILAR_TITLES_LIST(state, similarTitles) {
state.similarTitles = similarTitles;
}
},
actions: {
async getSimilarTitles({ commit }, payload) {
console.log("axios begin"); // this shows briefly
await axios
.get(
`https://tastedive.com/api/similar?q=${payload}&type=books&info=1&k=${process.env.VUE_APP_TASTE_DIVE_API_KEY}`
)
.then(data => {
console.log("did i get here?"); // this never shows
console.log(data.Similar.Results); // or this
commit("SIMILAR_TITLES_LIST", data.Similar.Results); // not surprising that this doesn't put info into state
});
console.log("axios end"); // this shows briefly
}
}
});
Recommender.vue
<template>
<div class="recommender">
<h1>Oscar's Book Recommendations!</h1>
<form class="findTitle">
<label for="enjoyedTitle">What's the name of a book you liked?</label>
<br />
<input type="text" id="enjoyedTitle" v-model="enjoyedTitle" />
<br />
<button @click="findSimilarTitles">Find a new book!</button>
</form>
</div>
</template>
<script>
export default {
name: "Recommender",
data() {
return {
enjoyedTitle: ""
};
},
methods: {
async findSimilarTitles() {
await this.$store.dispatch("getSimilarTitles", this.enjoyedTitle);
}
}
};
</script>
<style scoped lang="scss">
.recommender {
display: flex;
flex-flow: column nowrap;
form {
display: flex;
flex-flow: column nowrap;
align-self: center;
width: 21em;
button {
align-self: center;
width: 10em;
}
}
}
</style>
这是无声的失败。在控制台中短暂显示Axios调用前后的console.log
语句,但随后组件重置并且所有控制台语句均消失。 Axios调用中的console.log
语句从不显示。我知道这可以以某种方式起作用,否则互联网将无能为力。有人可以指出我没看到的东西吗?
感谢帮助!谢谢!
答案 0 :(得分:1)
你应该抓住
async getSimilarTitles({ commit }, payload) {
console.log("axios begin"); // this shows briefly
await axios
.get(
`https://tastedive.com/api/similar?q=${payload}&type=books&info=1&k=${process.env.VUE_APP_TASTE_DIVE_API_KEY}`
)
.then(data => {
console.log("did i get here?"); // this never shows
console.log(data.Similar.Results); // or this
commit("SIMILAR_TITLES_LIST", data.Similar.Results); // not surprising that this doesn't put info into state
}).catch(err => {
console.log('Call Failed!');
console.log(err);
});
console.log("axios end"); // this shows briefly
}
}