1

我有这么简单的组件。它在第一次渲染时很好,但是当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>
4

1 回答 1

1

奇怪的是,由于父子道具是反应性的,所以如果作为道具传递的数据发生变化,子组件内的道具应该相应地更新。

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

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

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

于 2019-01-23T11:15:43.057 回答