当我们需要从父组件向子组件传递数据时,会使用 props。想象一下这样的结构:有一些多层级嵌套的组件,形成了一颗巨大的组件树,而某个深层的子组件需要一个较远的祖先组件中的部分数据。在这种情况下,如果仅使用 props 则必须将其沿着组件链逐级传递下去,这会非常麻烦:
在这里插入描述
注意,虽然这里的 < Footer> 组件可能根本不关心这些 props,但为了使 < DeepChild> 能访问到它们,仍然需要定义并向下传递。如果组件链路非常长,可能会影响到更多这条路上的组件。这一问题被称为“prop 逐级透传”,显然是我们希望尽量避免的情况。
provide 和 inject 可以帮助我们解决这一问题。 一个父组件相对于其所有的后代组件,会作为依赖提供者。任何后代的组件树,无论层级有多深,都可以注入由父组件提供给整条链路的依赖。
子组件注册触发事件,父组件注册
触发子组件事件后的方法写在method里面
父组件这么写
<component-a
v-on:child-say="listenToMyBoy"></component-a>
<p>Do
you
like
me
{{childWords}}</p>
methods:
{
listenToMyBoy:
function
(somedata){
thischildWords
=
somedata
}
}
子组件component-a这么写
<button
v-on:click="onClickMe">like!</button>
methods:
{
onClickMe:
function(){
this$emit('child-say',thissomedata);
}
}
以上这篇vue
子组件向父组件传值方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:vue父组件向子组件动态传值的两种方法浅谈Vue父子组件和非父子组件传值问题Vue中父组件向子组件通信的方法vue20
父组件给子组件传递数据的方法
script:
// changeName:子组件watch的 this$emit('changeName', thisprovince)的changeName,是自定义的
// lockValue:父组件的方法名
大多数父组件往子组件传值的情景都是:
父组件传值—>子组件通过props接收父组件传值—>子组件通过插值表达式{{Value}}去显示值
但是!!总会有不同的情景出现!
当我在使用element组件库时候就遇到了如下情况:
一个很简单的表单组件,但是它的数据显示是通过model属性绑定的,因而这里我们不能去使用表达式去处理了。一开始我想,那也很简单啊,你不是要绑定值吗,我在data里去写一个form值,然后再给这个form绑定上父组件传来的值不就完事了嘛。看上去是可行的,但是,事实往往不遂人意,这样是行不通的。原因是,data属性只是一个初始值,并不会实现数据绑定的效果,因此我这种妄图通过data实现父子组件值绑定的思路破产了。
下面是正解(通过watch:监听器实现):
ps:更好的方法可以通过计算属性computed去实现同样的效果,从性能上较优
欢迎大家纠错和讨论。
1、清空子组件data数据
Objectassign(this data,this optionsdata())
2、调用子组件方法
this$refsXXX方法名()
vue的自定义指令可以很好地或者说以更好的方式实现这个需求。
其中thisel还会告知自定义指令所在的元素,并在元素(每次)渲染前调用指令函数。
<script>
Vuecomponent('v-scoped',{
update:function(_scoped){
thiseltextContent=_scoped+thiseltextContent;
}
});
</script>
<style v-scoped="'body>'">
a{color:blue;}
</style>
有些功能确实需要在实际使用后才“看得到”文档中的相关阐述,死磕文档并不是好做法。当然,这要结合带着问题再回过头来看文档。先通读一遍文档,并时刻不认为“都看过了、没有需要的东西”是非常重要的。
以上就是关于vueprovide传值对象不能取data的值全部的内容,包括:vueprovide传值对象不能取data的值、vue 子组件向父组件传值方法、vue---父组件监听子组件并获取子组件的值(子组件多个值)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)