我有一个简单的组件。而且它在第一次呈现时就很好,但是当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>
答案 0 :(得分:0)
奇怪,因为子道具的父对象是反应性的,所以如果通过道具传递的数据发生变化,则子对象内部的道具应该相应地更新。
也许尝试像这样使用计算属性
computed: {
iconClass () {
return this.StatusToClass[this.result]
}
}
其他问题可能与数据本身的反应性有关,也许您正在错误地更新它,因此它没有反应性。您应该检查是否通过Vue DevTools收到了正确的更新道具。