【问题标题】:Vue component doesn't reactively updateVue 组件不会被动更新
【发布时间】:2019-06-16 22:30:13
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我不知道这很棒的字体魔法可能有一些问题。因为如果我只是打印出这些类,它们会被更新,但不会在 html 输出中。
    猜你喜欢
    • 2018-04-29
    • 2020-01-19
    • 2018-11-19
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2019-08-06
    • 2018-10-14
    相关资源
    最近更新 更多