Vue组件不会进行反应性更新

时间:2019-01-23 10:46:14

标签: typescript vue.js vue-component vue-reactivity

我有一个简单的组件。而且它在第一次呈现时就很好,但是当result道具更改时,它什么都没有发生,所有类仍然相同。

<template>
    <span class="icon" >
        <i :class="iconClass"></i>
    </span> 
</template>

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

    @Component
    export default class Icon extends Vue {
        @Prop() result!: string;

        private StatusToClass: { [index: string] : string } = {
            'success': "has-text-success fas fa-check-circle",
            'warning': "has-text-warning fas fa-square",
            'noData':  "has-text-warning fas fa-square",
            'fail': "has-text-danger fas fa-exclamation-triangle",
        }

        get iconClass(){
            return this.StatusToClass[this.result];
        }
    }
</script>

1 个答案:

答案 0 :(得分:0)

奇怪,因为子道具的父对象是反应性的,所以如果通过道具传递的数据发生变化,则子对象内部的道具应该相应地更新。

也许尝试像这样使用计算属性

computed: {
  iconClass () {
    return this.StatusToClass[this.result]
  }
}

其他问题可能与数据本身的反应性有关,也许您正在错误地更新它,因此它没有反应性。您应该检查是否通过Vue DevTools收到了正确的更新道具。