Vue道具更新-组件渲染功能中可能有无限的更新循环

时间:2018-09-07 11:54:02

标签: javascript vuejs2 vue-component

Vue.component("step", {
        props: ["Model", "step"],
        data: function () {
            return {
                
            };
        },
        methods: {
            activateStep: function (step) {
                var vm = this;

                Vue.set(vm.Model, "ActiveStep", step);
            }
        }
});
<step inline-template :model="Model" step=SomeStepNumber>

</step>

当我尝试更新vm.Model.ActiveStep时,它显示错误消息-“ 您可能在组件渲染函数中有一个无限的更新循环

1 个答案:

答案 0 :(得分:0)

您不应该在组件中设置属性的值。属性由父级设置并传递到组件中。错误是

Vue.set(vm.Model, "ActiveStep", step);

如果组件需要更新其父级,惯用的方法是向父级发出事件

this.$emit("step", step)

,并让该父组件适当地更新属性。

如果需要双向绑定,则可以使用v-model.sync modifier