vue3.0 03 父子组件通信 父组件使用ref获取子组件中所有数据 子组件中使用expose限定父组件中获取范围操作流程

1. 父组件使用ref获取到子组件所有数据流程

1.创建Demo01子组件模板,在父组件中调用Demo01并且定义ref

<Demo01 ref="getSonMsg"></Demo01>

2.声明ref中数据内容

let getSonMsg = ref();

3.从子页面获取到子页面所有数据内容

 onMounted(() => {
   console.log("使用ref获取到的子页面中的数据是:", getSonMsg.value);
 });

输出数据

4.父页面完整代码

<template>
  <div>
    <h1>这里是被定义的父组件01</h1>
    <Demo01 ref="getSonMsg"></Demo01>
  </div>
</template>

<script>
import { ref, onMounted } from "vue";
import Demo01 from "./Son.vue";

export default {
  components: {
    Demo01,
  },
  setup() {
    let getSonMsg = ref();

    onMounted(() => {
      console.log("使用ref获取到的子页面中的数据是:", getSonMsg.value);
    });

    return { getSonMsg };
  },
};
</script>

2.子组件使用expose对父组件中能够获取到的内容进行限定

1.expose方法位于setup()语法的第二个参数==》context中 前面的用于父传子的props即使用不到,也应该被声明,用于占位

  setup(props, context) {}

在这里插入图片描述

  1. 结构expose
    const { expose } = context;

3.使用expose方法限定允许对外暴漏的数据 //如上现在的子组件中只有 num和add方法

expose({ num }); 

数据限定

4.子页面完整代码

<template>
  <div>
    <h3>demo01中的子组件</h3>
    <button @click="add()">+</button><button>{{ num }}</button>
  </div>
</template>

<script>
import { ref } from "vue";

export default {
  // 使用加减法案例练习组件通信
  setup(props, context) {
    console.log("context", context);

    // 从context数据中结构expose方法
    const { expose } = context;

    let num = ref(10);

    let add = () => {
      num.value++;
    };

    expose({ num }); //当前只暴露num,add方法没有在暴露限定的范围里

    return { num, add };
  },
};
</script>

<style scoped>
div {
  border: 1px solid green;
}
</style>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值