采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师我想请问下关于provide提供一个方法这个方法返回一个对象,然后使用计算属性监听调用这个方法这种方式和我直接provide一个对象然后使用computed有什么原理上的不同。 老师我明白第二种方式不会是响应式的,我自己实践也发现了。可是还是想请问老师为什么,我明明使用computed监听了这个provide提供的data。它和老师你调用方法return的本质也是这个对象,为什么这种方式就不是响应式
<!-- @date: 2020-08-12 10:57:26 -->
<template>
<div class=
"testView"
>{{test}}</div>
</template>
<script>
export
default
{
data() {
return
{};
},
inject: [
"getTest"
],
computed: {
test() {
this
.getTest();
};
</script>
<div>
<!-- <router-view /> -->
<test-view />
</div>
import testView from
"./testView"
;
components: {
testView,
provide() {
getTest:
.getTest
}
methods: {
getTest() {
.test;
test: 1,
form: {
filds: [
{ id: 3, name:
"wanghaoyu"
, age: 23 },
{ id: 4, name:
"wanghaoyu1"
, age: 24 },
mounted() {
setInterval(() => {
.test++;
}, 1000);
和你说话有点累,为什么能响应,我觉得是因为计算属性会更新,而不是因为 provide 传递的是方法 了解吗? 计算属性会不断的更新 provide 的方法,方法可以获取最新的值
你去试试子组件去掉computed直接使用inject的方法在模板上看看能不能更新
把computed去掉,子组件模板直接调用父方法。同样也是响应式,要不你先试试
为什么会提供方法以供 provide 使用视频里面已经说过了,为了防止 组件实例化的时候 provide 默认实例化 null 数据
provide 和 inject 绑定并不是可响应的。这是刻意为之的。然而,如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。
所以不是 computed 监听出了问题,而是 provide 本身和 inject 就不是可响应的数据 除非使用引用类型的数据,你可以多翻翻官方文档
我的意思是说为什么使用method返回对象,和我直接computed对象
不是说了,组件初始化的时候 provide 比数据请求快,所以会有 null 的情况,用 method 方法的时候,执行的时候才会去动态获取 数据 就不会出现 null 的情况了
method 和 computed 区别是一个是方法需要手动执行,一个是属性自动执行
登录后可查看更多问答,登录/注册
同级别前端,掌握数据可视化薪资更高
1.4k 20
1.4k 12
1.3k 12
1.2k 10
1.1k 10
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号