vue使用axios获取数据页面刷新时出错

发布于 2022-09-04 14:58:00 字数 729 浏览 8 评论 0

用了vuex,在action里定义了一个发请求并把数据放在state里方法

actions: {  
    GET_LIST_DATA: ({state },url) => {
      axios.get(url)
      .then(function (response) {
        state.good=response.data.data
        console.log(state.good)

      })
      .catch(function (error) {
        console.log(error);
      });
    }
    
  },

在一个组件的mounted里调用这个action之后获取state

mounted() {
    this.$store.dispatch('GET_LIST_DATA','https://cnodejs.org/api/v1/topics')
      .then(() => {
        this.dataList = this.$store.state.good   
        console.log(this.$store.state.good)
        
      })
  },

页面第一次打开时,执行顺序为请求成功后打印这个state,刷新页面时,请求依然成功了,但state就变成undefined了,不知道是不是请求还没成功就打印了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无尽的现实 2022-09-11 14:58:00

箭头函数的this指向问题,换成function就好了,或者用闭包把this保存到变量传入箭头函数里

够钟 2022-09-11 14:58:00

你打印的时候 你还没有请求成功。你应该在请求成功时候返回一个promise 通知你的组件去执行

GET_LIST_DATA: ({state}, url) => {
    return new Promise(resolve, reject) => {
     axios.get(url)
      .then(function (response) {
        state.good=response.data.data
        console.log(state.good)
        resolve()
      })
      .catch(function (error) {
        console.log(error);
        reject(error)
      });
    }  
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文