asyncComputed 介绍

vue里普通的计算属性computed只能计算一些同步的值,但是如果碰到需要在计算属性中发送一些异步的网络请求,需要用到vue-async-computed异步计算属性的插件

业务场景介绍

结合我们上面讲解的内容,我们需要根据不同的类型查询不同的数据字段,并渲染到组件上面。
因为在计算属性中,需要用到http的请求,此处存在异步操作,如果使用computed则无法渲染,因为computed是同步计算属性。

  1. asyncComputed: {
  2. fieldData() {
  3. if (this.tableType == "1") {
  4. this.findFieldData(store.getters.tableName);
  5. }
  6. }

asyncComputed 安装与使用

  1. npm install --save vue-async-computed

当使用了 webpack 或者 browserify 等时,需要明确通过 Vue.use 实现安装。

  1. import Vue from 'vue'
  2. import AsyncComputed from 'vue-async-computed'
  3. Vue.use(AsyncComputed)

和同步计算属性类似,异步计算属性有 get 方法,但是没有 set 方法,设置了也会被忽略。
示例代码:

  1. asyncComputed: {
  2. postContent: {
  3. get () {
  4. return Vue.http.get('/post/' + this.postId)
  5. .then(response => response.data.postContent)
  6. }
  7. }
  8. }