zoukankan      html  css  js  c++  java
  • Vue父组件调用子组件方法----多种写法

    一、父组件中引入子组件

    • 父组件 parent.vue
    <template>
        <div>
        <!-- 调用子组件,子组件的全部内容会显示在这个div中 -->
            <Child/>
        </div>
    </template>    
    
    <script setup>
    // import 子组件的相对路径
    import Child from './child.vue' 
    </script>
    
    • 子组件 child.vue
    <template>
        <div>我是子组件</div>
    </template>
    <script>
    </script>
    

    二、父组件中调用子组件的方法

    1、export default 写法

    • 父组件 parent.vue
    <template>
        <div>
            <Button @click="handleClick">点击调用子组件方法</Button>
            <Child ref="child"/>
        </div>
    </template>    
    
    <script>
    import Child from './child';
    
    export default {
        methods: {
            handleClick() {
                   this.$refs.child.$emit("childmethod")    //子组件$on中的名字
            },
        },
    }
    </script>
    
    • 子组件 child.vue
    <template>
        <div>我是子组件</div>
    </template>
    <script>
    export default {
        mounted() {
            this.$nextTick(function() {
                this.$on('childmethods', function() {
                    console.log('我是子组件方法');
                });
            });
         },
    };
    </script>
    

    2、父组件 setup 写法

    • 父组件 parent.vue
    <template>
        <div>
            <Button @click="handleClick">点击调用子组件方法</Button>
            <Child ref="Child"/>
        </div>
    </template>    
    
    <script setup>
    import Child from './child';
    
    const Child = ref(null)
    
    function handleClick(){
      Child.value.printfunction();
    }
    
    
    </script>
    
    • 子组件 child.vue
    <template>
        <div>我是子组件</div>
    </template>
    <script>
    export default {
        methods() {
            printfunction(){
              console.log('我是子组件方法');
            }  
         },
    };
    </script>
    

    3、子父组件都用 setup 写法

    • 父组件 parent.vue
    <template>
        <div>
            <Button @click="handleClick">点击调用子组件方法</Button>
            <Child ref="Child"/>
        </div>
    </template>    
    
    <script setup>
    import Child from './child';
    
    const Child = ref(null)
    
    function handleClick(){
      Child.value.printfunction();
    }
    
    
    </script>
    
    • 子组件 child.vue
    <template>
        <div>我是子组件</div>
    </template>
    <script setup>
      
      function printfunction(){
        console.log('我是子组件方法');
      }  
      
      // 将子组件的方法暴露出去
      defineExpose({
        printfunction
      })
    </script>
    
    作者:落花桂
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Selenium Webdriver元素定位的八种常用方式【转】
    python学习笔记(3)函数、参数、变量、递归
    Python学习总结
    Webdriver API (二)
    Webdriver API (一)
    解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
    selenium之 定位以及切换frame(iframe)
    第一篇博客
    自制DTU
    DTU软硬件方案
  • 原文地址:https://www.cnblogs.com/nthforsth/p/15333751.html
Copyright © 2011-2022 走看看