首页 > 其他分享 >函数式组件

函数式组件

时间:2024-10-26 13:21:17浏览次数:6  
标签:函数 dom mount msg let 组件 import

函数式组件:通过函数调用的方式添加组件。

传统调用组件方式的困扰:

<Child v-if='isShow' :msg='msg'/>
<botton @click='btnClick' />

import Child from '@/components/Child'

let isShow = ref(false);
let msg = ref('111');
let btnClick = ()=>{
     isShow.value = true;
     msg.value = 222;     
...
isShow.value = false; }
1,这种非马上就要渲染的组件,需要大量代码去控制他,比如需要申明是否添加组件的变量,传递的属性变量==
2,其他地方也要这么写,让人头皮发麻

 

 函数式调用组件:

let btnClick = ()=>{
     createChildComponent("222");  
}

//调用函数,就会自动添加组件,参数通过函数传递。
//调用方便,简单粗暴。

 

函数式组件的实现:toast举例

<!--Toast.vue  组件文件的创建是一样的-->
<template>
    <div class="page">
        <div class="toast">{{msg}}</div>
    </div>
</template>

<script setup>
import { ref,defineProps } from 'vue';

let {msg} = defineProps({
    msg:{
        default:"请求成功!"
    }
});
</script>

<style lang='scss' scoped>
.page{
    position: fixed;
    width: 100vw;
    height: 100vh;

    .toast{
        background-color: rgba(0,0,0,0.6);
        margin-bottom: 10px;
        border-radius: 5px;
        width: 160px;
        height: 30px;
        display: flex;
        align-items: center;
        justify-content: center;
        font-size: 20px;
        color:#eeeeee;
    }
}

</style>
<!--Toast.js  里面导出创建上面toast组件的函数-->
import { createApp } from "vue";
import Toast from "@/components/Toast.vue";

//dom要挂载到的dom
export default function createToastComponent(msg) {
    //createApp创建组件实例
    let instance = createApp(Toast,{msg});

    let mountNode = document.createElement('div');
    document.body.appendChild(div);
    //将组件挂载相应的dom上
    instance.mount(mountNode);

    setTimeout(()=>{
        //卸载组件
        instance.unmount();
        //卸载组件后,把渲染的html一并清除
        document.body.removeChild(mountNode);  
    },1000);

}


<!--Parent.vue调用-->
import createToastComponent from '@components/Toast.js'

let btnClick()=>{
     createToastComponent('222');
}

说明:

1,CreateApp(component,prop)返回一个组件实例,第一个参数是个组件,第二个参数是要传递的属性

  比如文件main.js  就有下面两句

  import App from './App.vue'        let app = createApp(App); 2,mount 将组件实例挂载到一个dom上,参数是一个dom元素(比如createElement,或queryElement的元素)或类选择器,       mount挂载到dom上,会导致dom里面的所有内容全部清空。这就是上面的例子中为什么新建一个dom来挂载mount的原因。       mount挂载dom必须已经渲染出来,main.js 中的app.mount('#app');      生成的index.html入口是下面这样的,通过defer加载js文件,保证下面的<div id='app'></div>先渲染出来
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="/favicon.ico">
    <title>screen</title>
  <script defer src="/js/chunk-vendors.js"></script><script defer src="/js/app.js"></script></head>
  <body>
    <noscript>
      <strong>We're sorry but screen doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

3,unmount卸载组件函数

标签:函数,dom,mount,msg,let,组件,import
From: https://www.cnblogs.com/caojianbang/p/18503931

相关文章

  • C语言数组与函数实践:构建基础版扫雷游戏
         使用C语言中的数组和函数来构建一个简单的扫雷游戏。通过这个项目,你可以练习如何在C语言中使用数组来存储和处理游戏数据,如何使用函数来组织代码并提高代码的可读性和可维护性。        在实现这个项目时,你可以按照以下步骤进行:1、定义游戏数组:使用二维数......
  • 函数递归
    函数递归目录​什么是递归递归的限制条件递归的举例递归与迭代1.递归是什么?​递归中的递就是递推的意思,归就是回归的意思。递归是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。写一个最简单的C语言递归代码:#include<stdio.h>intmain(){ printf("hehe......
  • time函数
    一、导包importname二、函数time.time()     功能:返回一个时间戳从1970年1月1日00:00:00UTC到当前时刻的秒数,这个时间戳是一个浮点数。 time.sleep(seconds)   功能:让程序暂停执行指定的秒数。time.localtime([secs])   功能:将一个......
  • 鸿蒙基础篇-组件
    “在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。”各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今天的学习,鸿蒙基础篇-组件首先在鸿蒙开发中,组件(Comp......
  • python内置函数大全
    文章目录一、数学运算相关二、类型转换相关三、序列操作相关四、对象操作相关五、反射操作相关六、输入输出相关七、文件操作相关八、代码编译执行相关九、装饰器相关十、其他Python的内置函数是Python提供的一系列可以直接使用的函数,这些函数涵盖了数学运算、类型......
  • 【Python中的匿名函数】如何高效使用lambda表达式!
    Python中的匿名函数:如何高效使用lambda表达式Python中的匿名函数,也被称为lambda表达式,是一种简洁的函数定义方式。它们在某些场景中能够显著简化代码结构,提升可读性和代码执行效率。本文将详细讨论lambda表达式的使用方法、优缺点、适用场景以及使用技巧,帮助你更高效地应用......
  • 网卡工具类 - C#小函数类推荐
          此文记录的是网卡操作的工具类。/***网卡工具类AustinLiu刘恒辉ProjectManagerandSoftwareDesignerE-Mail:[email protected]:http://lzhdim.cnblogs.comDate:2024-01-1515:18:00使用方法:1、获取......
  • 详解c++中的set_difference函数
    set_difference功能描述:求两个集合的差集函数原型:set_difference(iteratorbeg1,iteratorend1,iteratorbeg2,iteratorend2,iteratordest);//求两个集合的差集//注意:两个集合必须是有序序列//beg1容器1开始迭代器//end1容器1结束迭代器//beg2容......
  • oracle数据库---PL/SQL、存储函数、存储过程、触发器、定时器job、备份
    PL/SQL什么是PL/SQLPL/SQL(Procedure Language/SQL)是Oracle对sql语言的过程化扩展,指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力。把SQL语言的数据操纵能力与过程语言的数据处理能力结合起来,使得PLSQL面向过程但比过程语言简单......
  • 10.25Python_pandas_函数(1)
    二、函数1、常用的统计学函数函数名称描述说明count()统计某个非空值的数量sum()求和mean()求均值median()求中位数std()求标准差min()求最小值max()求最大值abs()求绝对值prod()求所有数值的乘积案例:#创建一个示例DataFramedata={'A':[1,2,3,4,5],......