• 通过ref进行组件间的通信


    ref:绑定dom节点,拿到的就是dom对象;

    ref:绑定组件,拿到的就是组件对象;

    ref绑在dom节点上:

    1. //绑在dom上,
    2. "text" ref="mytext">
    3. <input type="text" ref="myusername">
    1. //this.$refs拿到的是原生dom节点
    2. console.log(this.$refs)

    结果: 

    console.log(this.$refs.mytext,this.$refs.myusername)

    分别拿到两个input dom节点:

    完整代码: 

    1. <div id="box">
    2. <input type="text" ref="mytext">
    3. <input type="text" ref="myusername">
    4. <button @click="handleAdd">addbutton>
    5. div>
    6. <script>
    7. new Vue({
    8. el:"#box",
    9. methods:{
    10. handleAdd(){
    11. console.log(this.$refs.mytext,this.$refs.myusername)
    12. }
    13. }
    14. })
    15. script>
    16. body>

    结果:

    ref绑在组件上: 

    1. //绑在组件上
    2. "mychild">
    1. //this.$refs.mychild获取的是组件对象,里面有很多组件里的属性方法
    2. console.log(this.$refs.mychild)

    结果:

    我们在组件里定义一个状态:myname,通过“this.$refs.mychild”就能拿到整个组件对象,所以组件对象里的状态也就可以用访问了:

    console.log(this.$refs.mychild.myname)

    这样别的组件也就能拿到 child 组件上的状态了;

    通过组件拿节点:

    • 如果想拿到组件然后再通过组件拿到组件上的跟节点,就需要使用组件对象里的“$el”属性:
    console.log(this.$refs.mychild.$el)
    • 此时拿到的就是组件上的根节点 

    完整代码:

    1. <div id="box">
    2. <button @click="handleAdd">addbutton>
    3. <child ref="mychild">child>
    4. div>
    5. <script>
    6. Vue.component("child",{
    7. template:`
    8. child
    9. `,
    10. data(){
    11. return {
    12. myname:"child-11111"
    13. }
    14. }
    15. })
    16. new Vue({
    17. el:"#box",
    18. methods:{
    19. handleAdd(){
    20. console.log(this.$refs.mychild.myname)
    21. }
    22. }
    23. })
    24. script>

    结果:

    • 其他的组件也可以改这个状态;; 

    ref的缺点:

    因为ref虽然能实现组件之间的通信,但是会造成数据流流向的紊乱,所以一般不用;

     组件之间的通信有几种:

    • 父传子--通过自定义属性(兄弟之间的通信通过父组件中间人)
    • 子传父--通过自定义事件
    • bus方式--发布者、订阅者
    • vuex方式
    • ref方式--打破组件间的壁垒,直接拿来用

  • 相关阅读:
    SASE是什么?是进化版的SD-WAN吗?
    PGSQL的on conflict
    使用Thrift实现跨语言RPC调用
    R数据分析:生存分析的列线图的理解与绘制详细教程
    一个动态规划的简单例题
    Shell编程之代码规范
    排序算法——冒泡排序
    『第四章』一见倾心:初识小雨燕(上)
    MySQL之数据库管理(用户和数据权限管理)
    高级算法复习
  • 原文地址:https://blog.csdn.net/a1598452168YY/article/details/128020198