如何访问计算状态变量?

How to access computed state variable?

使用Vue Class组件,如何获取计算变量的值?尝试使用 this.bar 会出现错误:Property 'bar' does not exist on type 'Vue'.

<script lang="ts">
import { Vue, Component } from "vue-property-decorator";

@Component({
    computed: {
        bar() {
            return true;
        },
    },
    methods: {
        qux() {
            // How to get the value of bar here?
            if (this.bar) {
                baz();
            }
        },
    },
})
export default class Foo extends Vue {}
</script>

您不想使用 getter 的原因是什么?

@Component({})
export default class Foo extends Vue {
  get bar() { return true }
}

这被转换为计算属性

如果您使用 vue-property-decorator,一切都会扩展 class。

普通 Vue:

export default {
  data(){
    return {}
  },
  computed: {
    bar() {
        return true;
    },
  },
  methods: {
    qux() {
        if (this.bar) {
            baz();
        }
    }
  }
}

Typescript 中相同

@Component({})

export default class Foo extends Vue {
  get bar() {
    return true;
  }

  private qux() {
    if (this.bar) {
      this.baz();
    }
  }

  private baz() {
    //do smth
  }
}

那是因为你没有使用正确的语法。

你应该把你所拥有的改成这个

<script lang="ts">
import { Vue, Component } from "vue-property-decorator";

@Component  
export default class Foo extends Vue {
  get bar(): boolean {
    return true;
  }
  qux() {
    if (this.bar) {
        baz();
    }
  }
}
</script>

有关使用 Vue Class 组件的更多信息,请查看此 article