javascript - 页面中的 Nuxtjs 异步等待在页面刷新时不起作用

标签 javascript vuejs2 nuxt.js

我正在尝试使用 vuex 和 nuxt js 在我的页面的 fetch 方法中获取数据,但是每当有人刷新页面时它就会失败,但是当我通过 nuxt 导航导航时它会工作

所以在我的页面中有

    fetch ({ store, params }) {
        store.dispatch('getJobspecialisims')
    },

   //IVE ALSO TRIED ASYNC
     async asyncData (context) {
        await context.store.dispatch('getJobspecialisims');
    },

所以在我的 vuex Action 中我有

   async getJobspecialisims({commit}){
      await axios.get(process.env.baseUrl+'/job-specialisims').then((res)=>{
        commit(types.SET_JOB_SPECIALISIMS, res.data.data)
      },(err)=>{
           console.log("an error occured ", err);
    });
  },

现在在我的组件上获取记录

<div>
  <li v-for="(specialisim) in $store.getters.jobspecialisims">
    <!-DO STUFF HERE->   
 </li>

当一个人刷新浏览器时,http 请求不会被发送

我哪里错了? 我更喜欢异步等待方法。我知道它会返回一个 promise ,但我不知道如何知道 promise 何时解决。页面应该一直等待直到数据被完全提取,因此我在页面中调用了 fetch 或 asyncdata 方法

我还需要添加或修改什么?

最佳答案

对于异步操作,在 中调用它时,需要将 return 放在 dispatch 之前fetchasyncData:

fetch ({ store, params }) {
  // store.dispatch('getJobspecialisims')
  return store.dispatch('getJobspecialisims')
},

此答案的来源:Problem: Vuex actions, dispatch from page

无论如何,我还是不明白你为什么要用 awaitthen。如果是,我将像这样使用async await:

async getJobspecialisims({ commit }) {
  const res = await axios.get(YOUR_URL);
  if (!res.error) {
    commit("getJobspecialisims", res.data.data);
  } else {
    console.log(res.error);
  }
}

关于javascript - 页面中的 Nuxtjs 异步等待在页面刷新时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50663868/

相关文章:

vue.js - 如何在 Vue.js 中保留自定义组件标签名称

javascript - Vue.js:Nuxt 错误处理

vue.js - Nuxt.js - 在页面中添加两个布局

Laravel Vue Js npm run dev url

vuejs2 - Nuxt 自定义模块 Hook 未调用

javascript - 如何将 JavaScript 日期转换为 TZ 字符串?

javascript - Ember.js:对象模型和模型有什么区别?

javascript - 地理位置始终显示莫斯科 Javascript/JQuery/JSON(开放天气 API)

javascript - 当我使用 AngularJS $routeProvider 时,Node.js 页面转换不再起作用

javascript - Vue 内联模板不渲染