computed: {
comp: function () {
return () => import(`./component/item${this.formItem.item_type}.form`);
}
},
当我切换this.formItem.item_type的值,comp没有被触发
computed: {
comp: function () {
console.log(this.formItem.item_type)
return () => import(`./component/item${this.formItem.item_type}.form`);
}
},
当我加上console.log(this.formItem.item_type)时,正常触发,注释掉又不能正常触发,这是为什么呢?
另外:我使用watch去监听 正常了
watch:{
'formItem.item_type': function (val, oldVal) {
this.comp = () => import(`./component/item${this.formItem.item_type}.form`);
}
},
补充this.formItem对象
因为只有你在计算属性内访问了相应的变量, 计算属性才能形成对其的依赖.
当 a 函数没有调用时,
this.formItem.item_type
是不会被求值的, 也就一直没有被访问过, 所以无法被计算属性收集为依赖, 你console.log(this.formItem.item_type)
触发了this.formItem.item_type
的访问, 完成了依赖收集, 自然没有问题.还有, 像这种永远不会被执行的代码, 也无法被收集依赖.
解决方案: