• vue3.0 组件传参


    1,父到子 props

    父组件

    1. <template>
    2. <h1>我是父组件传参</h1>
    3. <navItem :ref="(el) => (navFnEL = el)" :list="list" @send="getInfo"></navItem>
    4. </template>

    子组件

    1. <script>
    2. import { onMounted, reactive } from "vue";
    3. export default {
    4. props: {
    5. list: {
    6. type: Array,
    7. default: () => {
    8. return [];
    9. },
    10. },
    11. },
    12. setup(props, context) {
    13. const list = reactive(props.list);
    14. console.log("title", list);
    15. const toFather = () => {
    16. context.emit("send", 666);
    17. };
    18. const init = (e) => {
    19. console.log("父组件主动调用子组件", e);
    20. };
    21. onMounted(()=>{
    22. console.log("9999999999999")
    23. })
    24. return {
    25. list,
    26. toFather,
    27. init
    28. };
    29. },
    30. };
    31. </script>

    解析

    父组件 在子组件标签上使用 v-bind:list="list"

    子组件使用props接收  list

    然后在setup 里使用 props.list 拿到数据

    2.子到父     context.emit()

    子组件

    context.emit("send", 666);

    父组件

      <navItem :ref="(el) => (navFnEL = el)" :list="list" @send="getInfo"></navItem>
    1. let getInfo = (e) => {
    2. console.log("获取数据", e);
    3. };

    使用ref 

    父组件 

      <navItem :ref="(el) => (navFnEL = el)" :list="list" @send="getInfo"></navItem>
    1. setup(props, context) {
    2. const navFnEL = ref();
    3. onMounted(() => {
    4. console.log("fnGetEl", fnGetEl.value);//子组件暴露的数据
    5. console.log("navFn", navFnEL);
    6. });
    7. return {
    8. navFnEL
    9. };
    10. };
    11. },

    子组件

    1. setup(props, context) {
    2. const list = reactive(props.list);
    3. onMounted(()=>{
    4. console.log("9999999999999")
    5. })
    6. return {
    7. list //父组件通过ref能够访问到的数据
    8. };
    9. },

    注意了

    1,绑定ref时需要这样使用

    :ref="(el) => (navFnEL = el)"

    对应    const navFnEL = ref();  navFnEL 能够拿到 所有的子组件返回的内容

    并且需要return 返回 navFnEL

    使用getCurrentInstance获取到父级的实例 调用父级的方法修改数据

    1. import { getCurrentInstance} from "vue";
    2. const ctx = getCurrentInstance()
    3. ctx.parent.setupState.getInfo(999999999)

    1. let getInfo = (e) => {
    2. console.log("获取数据", e);
    3. };

    v-model 组件交互

     <navItem v-model:showFlag="show"></navItem>

    1. export default {
    2. props: {
    3. showFlag:{
    4. type:Boolean,
    5. default:false
    6. }
    7. },
    8. setup(props, context) {
    9. const toFather = () => {
    10. context.emit("update:showFlag",false)
    11. };
    12. onMounted(()=>{
    13. ctx.parent.setupState.getInfo(999999999)
    14. })
    15. return {
    16. toFather
    17. };
    18. },
    19. };

  • 相关阅读:
    conda 安装tensorflow一些命令
    spark中Repartition 和 Coalesce 区别
    HTTP代理出现错误是什么原因?如何解决?
    【运维】尝试解决无线网络掉包
    携职教育:【建议收藏】14个热门证书,最全考证时间表
    使用 Liquibase 管理数据库版本 - SpringBoot 2.7 .2 实战基础
    设计模式之桥接模式--连接抽象与实现(你想知道的问题都有)
    【顺序表和链表】
    IDEA的安装与使用
    Java面试题(外包公司)
  • 原文地址:https://blog.csdn.net/qq_42389674/article/details/125500371