2017-03-06 54 views
1

我有一个组件,其数据由ajax初始化。我知道vue.js提供了几个生命周期挂钩:Lifecycle-Diagram。但是,对于AJAX初始化数据,其中挂钩(beforeCreate,创建,安装等),是做的最好的地方:vue2:无法找到合适的方法来初始化组件数据ajax

hook_name: function() { 
    ajaxCall(function(data) { 
     me.data = data; 
    }); 
} 

目前,我这样做在mounted,使其重新呈现组件。但我认为我们应该在第一次渲染前获取数据。有人能找出最好的办法吗?

回答

2

如果你想初始化数据的组件,您从request接收,created()将是最合适的挂钩使用它是一个request,它可能无法通过created甚至mounted()最终解决 (即使您的DOM准备好展示内容!)。

所以确实有你的组件初始化像空的数据:

data() { 
    return { 
    listOfItems: [], 
    someKindOfConfig: {}, 
    orSomeSpecialValue: null 
    } 
} 

,当你在你的created钩收到其分配的实际值,因为这些空data性能将可在那个时间点,像:

created() { 
    someAPICall() 
    .then(data => { 
     this.listOfItems = data.listOfItems 
    }) 
    /** 
    * Notice the use of arrow functions, without those [this] would 
    * not have the context of the component. 
    */ 
} 

好像你没有使用(或不打算使用)vuex但我强烈建议你使用它在存储管理数据。如果您使用的是vuex,则可以使用actions可以进行这些api调用,并且通过在组件中使用简单的getters,您可以访问由request返回的值。

相关问题