Vue.js 使用axios数据的组件生命周期

Vue.js 使用axios数据的组件生命周期,vue.js,axios,vuex,Vue.js,Axios,Vuex,在我正在开发的应用程序中,我有一个加载数据并将其存储在存储中的组件。为此,我实现了创建函数和计算函数,如下所示: computed: { initiatives: function () { return this.$store.state.initiatives.initiatives } }, created () { this.$store.dispatch('initiatives/getInitiatives') } data: function () { r

在我正在开发的应用程序中,我有一个加载数据并将其存储在存储中的组件。为此,我实现了创建函数和计算函数,如下所示:

computed: {
  initiatives: function () {
    return this.$store.state.initiatives.initiatives
  }
},
created () {
  this.$store.dispatch('initiatives/getInitiatives')
}
data: function () {
  return {
    cinitiative: {}
}
这允许组件提供一个主动变量。为了定义一个特定的计划,我有一个如下的变量:

computed: {
  initiatives: function () {
    return this.$store.state.initiatives.initiatives
  }
},
created () {
  this.$store.dispatch('initiatives/getInitiatives')
}
data: function () {
  return {
    cinitiative: {}
}
我要做的是使用存储在this.initiative中的加载对象中的随机对象初始化CiInitiative变量。在创建的函数中执行此操作时:

created () {
  this.$store.dispatch('initiatives/getInitiatives')
  let iindex = Math.floor(Math.random() * Math.floor(this.initiatives.length))
  this.cinitiative = this.initiatives[iindex]
}
我有一个错误:

TypeError: "this.cinitiative is undefined"

当我尝试从挂载函数执行同样的操作时,我也会遇到同样的错误。我应该在哪里做呢?

因为
创建的
钩子只执行一次,而且
主动性/getInitiaties
取决于承诺,所以您应该等待这一点,比如:

异步创建(
async){
等待此消息。$store.dispatch('Initiaties/GetInitiaties'))
让iindex=Math.floor(Math.random()*Math.floor(this.initiaties.length))
this.cinInitiative=this.initiative[iindex]
}
但实际上,最佳实践是将
cinInitiative
转化为计算属性,这是对
计划的反应:

计算:{
倡议:职能(){
返回此。$store.state.initiaties.initiaties
},
cinInitiative:函数(){
让iindex=Math.floor(Math.random()*Math.floor(this.initiaties.length))
返回此。倡议[iindex]
},
},

我想你需要回报一个承诺,看看这条完美的线索!成功了,谢谢!