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]
},
},
我想你需要回报一个承诺,看看这条完美的线索!成功了,谢谢!