请问老师为什么不是响应式
来源:8-11 provide+inject实现组件通信

hy_wang
2020-09-08
老师我想请问下关于provide提供一个方法这个方法返回一个对象,然后使用计算属性监听调用这个方法这种方式和我直接provide一个对象然后使用computed有什么原理上的不同。
老师我明白第二种方式不会是响应式的,我自己实践也发现了。可是还是想请问老师为什么,我明明使用computed监听了这个provide提供的data。它和老师你调用方法return的本质也是这个对象,为什么这种方式就不是响应式
写回答
2回答
-
hy_wang
提问者
2020-09-09
<!-- @date: 2020-08-12 10:57:26 --> <template> <div class="testView">{{test}}</div> </template> <script> export default { data() { return {}; }, inject: ["getTest"], computed: { test() { return this.getTest(); }, }, }; </script>
<template> <div> <!-- <router-view /> --> <test-view /> </div> </template> <script> import testView from "./testView"; export default { components: { testView, }, provide() { return { getTest: this.getTest } }, methods: { getTest() { return this.test; }, }, data() { return { test: 1, form: { filds: [ { id: 3, name: "wanghaoyu", age: 23 }, { id: 4, name: "wanghaoyu1", age: 24 }, ], }, }; }, mounted() { setInterval(() => { this.test++; }, 1000); }, }; </script>
152022-05-12 -
希卡利
2020-09-09
为什么会提供方法以供 provide 使用视频里面已经说过了,为了防止 组件实例化的时候 provide 默认实例化 null 数据
provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。
所以不是 computed 监听出了问题,而是 provide 本身和 inject 就不是可响应的数据 除非使用引用类型的数据,你可以多翻翻官方文档
1132020-09-09
相似问题
请问老师关于callback
回答 2
请问老师关于methods
回答 1
请问老师这里NextTick怎么无效
回答 3
vscode 这个智能提示是怎么出现的?
回答 1
为什么老师的Icon组件只能使用一次呢?
回答 1