Axios在Vuex操作中未返回响应

我正在尝试使用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语句从不显示。我知道这可以以某种方式起作用,否则互联网将无能为力。有人可以指出我没看到的东西吗?

感谢帮助!谢谢!

xiaozhuhechaohong 回答:Axios在Vuex操作中未返回响应

你应该抓住

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
}

}

本文链接:https://www.f2er.com/3154928.html

大家都在问