Vue3新特性

news2024/12/27 13:46:37

文章目录

  • 一 新特性之组合API
    • 1.1 ref&reactive
    • 1.2 methods
    • 1.3 props和context
    • 1.4 完整代码&效果演示
  • 二 Vue3新特性之生命周期函数(在setup中)
  • 三 父子级组件间数据传递
    • 3.1 Provide&Inject
  • 四 Fragment(碎片)

一 新特性之组合API

1.1 ref&reactive

  • 在Vue2.x中通过组件data的方法定义一些当前组件的数据
data() {
	rerturn {
		name: '',
		list: []
	}
}
  • 在Vue3.x中通过ref或者reactive创建响应式对象
  • 使用前要引入ref和reactive
  • 在setup中定义数据
  • 并且必须在return()方法中返回返回
<script>
import {ref,reactive} from "vue";
export default {
  name: 'HelloWorld',
  setup() {
    //ref
    const message=ref("消息文本")
    //reactive
    const names=reactive({
      list:["xiaoMing","Tom","Jack"]
    })
    return {
      message,
      names
    }
  }
}
</script>

1.2 methods

  • methods中定义的方法写在setup()中
<script>
import {ref,reactive} from "vue";

export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  setup(props) {
    //ref
    const message=ref("消息文本")
    //function
    function clickHandle() {
      alert("文本内容改变了!")
      message.value="新的消息文本"
    }
    return {
      message,
      clickHandle
    }
  }
}
</script>

1.3 props和context

  • 在2.x版本中,组件的方法中可以通过this获取到当前组件的实例,并执行便量的修改方法的调用组件的通信等。
  • 但是在3.x版本中, set up在beforecreate和created的时就已调用无法使用this,但是可以通过接收set up(props,ctx)的方法获取到当前组件中的实例和 props
<script>
import {ref,reactive} from "vue";

export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  setup(props,ctx) {
    //setup中没有this对象,要用context
    console.log(ctx)
    const msg=props.msg
    return {
      msg
    }
  }
}
</script>

1.4 完整代码&效果演示

<template>
  <div class="hello">
    <h1>vue3新特性:组合API</h1>
    <h1>{{message}}</h1>
  <ul>
    <li v-for="(item,index) in names.list" :key="index">{{item}}</li>
  </ul>
    <button @click="clickHandle">改变文本内容</button>
    <h1>{{msg}}</h1>
  </div>
</template>

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

export default {
  name: 'HelloWorld',
  props: {
    msg: String
  },
  setup(props,ctx) {
    //setup中没有this对象,要用context
    console.log(ctx)
    //ref
    const message=ref("消息文本")
    const msg=props.msg
    //reactive
    const names=reactive({
      list:["xiaoMing","Tom","Jack"]
    })
    //function
    function clickHandle() {
      alert("文本内容改变了!")
      message.value="新的消息文本"
    }
    return {
      message,
      names,
      clickHandle,
      msg
    }
  }
}
</script>

在这里插入图片描述

二 Vue3新特性之生命周期函数(在setup中)

Options APIHook inside setup
beforeCreateNotneeded*
CreatedNotneeded*
beforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeUnmountonBeforeUnmount
unmountedonUnmounted
<template>
  <div class="hello">
    <h1>Vue3新特性:Setup中的生命周期函数</h1>

  </div>
</template>
<script>
import {onMounted} from "vue";

export default {
  name: 'HelloWorld',
 setup() {
   //现在可以书写多个同一类型的生命周期函数
   //使众多放在onMounted中的业务逻辑结构代码更清晰,比如一个逻辑放在一个函数中
   onMounted(()=>{
     console.log("生命周期函数:onMounted1")
   })
   onMounted(()=>{
     console.log("生命周期函数:onMounted2")
   })
 }
}
</script>

三 父子级组件间数据传递

3.1 Provide&Inject

  • Provide()和inject()要配合使用【不限层级】,实现嵌套组件之间的数据传递
  • 这两个函数只能在setup()函数中使用
  • 父级组件使用Provide()函数向下传递数据
  • 子级组件使用inject()函数获取上层传递过来的数据


  • 父级组件代码
<script>
import HelloWorld from './components/HelloWorld.vue'
import MyCompent from "@/components/MyCompent";
import {provide} from "vue";

export default {
  name: 'App',
  components: {
    HelloWorld,
    MyCompent
  },
  setup() {
    provide("message","父组件传递向子组件的内容")
  }
}
</script>

  • 子级组件代码
<script>
import {inject} from "vue";

export default {
  name: "MyCompent",
  setup() {
    const customVal=inject("message");
    return {
      customVal
    }
  }
}
</script>

在这里插入图片描述

四 Fragment(碎片)

  • 不再限于模板中的单个根结点
<template>
  <div class="hello">
    <h1>Vue3 Fragment:Fragment</h1>
  </div>
    <h1>Vue3 Fragment:Fragment</h1>
</template>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/146844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XMLHttpRequest和Referer

XMLHttpRequest 对象简介 1999年&#xff0c;微软公司发布 IE 浏览器5.0版&#xff0c;第一次引入新功能&#xff1a;允许 JavaScript 脚本向服务器发起 HTTP 请求。这个功能当时并没有引起注意&#xff0c;直到2004年 Gmail 发布和2005年 Google Map 发布&#xff0c;才引起广…

承蒙时光不弃,做个好人!

落幕 2022年博客之星终于要在今晚2023年1月7日24点整落下帷幕&#xff0c;从上个月28号开始&#xff0c;仿佛经历了一场噩梦&#xff0c;本是抱着随便玩玩的心态报了名&#xff0c;没成想&#xff0c;刚开始自投五星之后竟然显示10几名&#xff0c;那是不是我稍加努力就进前十…

狂揽两千星,速度百倍提升,高性能 Python 编译器 Codon 火了

前言 众所周知&#xff0c;Python 是一门简单易学、具有强大功能的编程语言&#xff0c;在各种用户使用统计榜单中总是名列前茅。相应地&#xff0c;围绕 Python&#xff0c;研究者开发了各种便捷工具&#xff0c;以更好的服务于这门语言。 编译器充当着高级语言与机器之间的…

TensorFlow笔记之单神经元完成多分类任务

文章目录前言一、逻辑回归1.二分类问题2.多分类问题二、数据集调用三、TensorFlow1.x1.定义模型2.训练模型3.结果可视化四、TensorFlow2.x1.定义模型2.训练模型3.结果可视化总结前言 记录分别在TensorFlow1.x与TensorFlow2.x中使用单神经元完成MNIST手写数字识别的过程。 一、…

Linux出现ping: www.baidu.com: 未知的名称或服务解决方法

文章目录解决对象方法先找到网关在Windows下进行VMnet8的配置ping成功Linux出现ping: www.baidu.com: 未知的名称或服务解决方法 解决对象 本文的方法用于各位大佬已经用过以下方法仍然无法ping成功 Linux防火墙已关闭和Windows防火墙已经关闭已经配置好 vim /etc/sysconfig/…

手撕C语言理论知识(上)粗略讲解C语言的部分入门知识

目录 C语言的一些基础知识 操作符简介 Scanf的%[ ] 语句&#xff08;分支、循环、goto&#xff09; 函数 C语言的一些基础知识 主函数 - 程序的入口 - main函数有且仅有一个。char - short - int - long - long long - float - double%d - 十进制整型 %u - 无符号整型 %…

【博学谷学习记录超强总结,用心分享|产品经理基础总结和感悟15】

互联网产品设计背后的心理学02&#xff1a;你就是会被其他人的行为所影响一、前言二、实验设计及结果分析三、实验原理四、实验方法总结五、产品设计中的应用六、结束语前文回顾&#xff1a;让人们做出决定并不是信息本身&#xff0c;而是这些信息呈现的背景或情景。我们这个信…

Spring Cloud Alibaba Dubbo(服务远程调用)

一、软件环境 &#xff08;1&#xff09;自己部署服务器 所有软件及服务器自己进行管理提供&#xff0c;可以直接在项目中添加Spring Cloud依赖。推荐 <dependencyManagement> <dependencies> <dependency> <groupId>com.a…

liunx centos9中安装flask并在pycharm中使用图文攻略

liunx centos9中安装flask并在pycharm中使用图文攻略1.首先在liunx的终端中输入2.安装好flask之后就在pycharm创建新的项目处添加flask项目3.点击绿色三角箭头开始运行flask项目4. 然后登录ip地址就出现Hllo world就代表flask环境搭建完成需要注意事项1.首先在liunx的终端中输入…

ngx_thread_pool_init()

ngx_thread_pool_cycle()函数的主要工作是从待处理的任务队列中获取一个任务&#xff0c;然后调用任务对象的handler()函数处理任务&#xff0c;完成后把任务放置到完成队列中&#xff0c;并通过ngx_notify()通知主线程 手写线程池与性能分析 - 知乎 pthread_cond_wait函数的原…

【5G RRC】5G系统消息介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

一键绕过ID锁激活,为什么很多人都会失败?绕ID这一篇就够了

最近阳了所以暂时断更&#xff0c;你们也要注意身体&#xff0c;最好不要阳 现在绕ID的方法已经非常完善&#xff0c;一个小白选手只要有设备就可以正常绕过ID&#xff0c;总的来说绕ID分为两个步骤&#xff1a;第一步是手机的越狱&#xff0c;这里只能是用checkra1n越狱&…

数据在内存中存储☞(超详解)

目录 一.数据类型大家族 1.了解类型的意义 2.数据类型大家族的分类 二.详解☞数据储存之整形 1.储存方式 &#xff08;1&#xff09;.原码反码补码的概念 &#xff08;2&#xff09;.原码反码补码出现的原因&#xff1a; 计算机中只有加法器没有减法器&#xff0c;所有只…

SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences

Paper name SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences Paper Reading Note URL: https://arxiv.org/pdf/1904.01416.pdf TL;DR 2019 ICCV 论文&#xff0c;提出了一个大规模的真实场景 LiDAR 点云标注数据集 SemanticKITTI&#xff…

数字信号处理第六次试验:数字信号处理在双音多频拨号系统中的应用

数字信号处理第六次试验&#xff1a;数字信号处理在双音多频拨号系统中的应用前言一、实验目的二、实验原理和方法1.关于双音多频拨号系统2.电话中的双音多频&#xff08;DTMF&#xff09;信号的产生与检测3.检测DTMF信号的DFT参数选择4.DTMF信号的产生与识别仿真实验三、实验内…

菜鼠的保研总结

1.个人基本情况 本科学校&#xff1a;山东某双非 本科专业&#xff1a;网络工程 成绩排名&#xff1a;1/46 英语成绩&#xff1a;四级529&#xff0c;六级502 科研竞赛&#xff1a;美国大学生数学建模比赛特等奖提名、全国英语翻译比赛三等奖、山东省蓝桥杯java大学生B组三等奖…

C++基础:KMP

让我们先看一个问题&#xff1a;给定一个字符串 S&#xff0c;以及一个模式串 P&#xff0c;所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P 在字符串 S 中多次作为子串出现。求出模式串 P 在字符串 S 中所有出现的位置的起始下标。输入格式第一行输入整数 N&#…

【Python】杨辉三角中的排成一列编号的问题

题目描述 下面的图形是著名的杨辉三角形&#xff1a; 如果我们按从上到下、从左到右的顺序把所有数排成一列&#xff0c;可以得到如下数列&#xff1a; 1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,⋯ 给定一个正整数 N&#xff0c;请你输出数列中第一次出现 N是在第几个数&#xff1f; …

Go语言设计与实现 -- 内存管理器

不同的编程语言选择不同的方式管理内存&#xff0c;本节会介绍Go语言内存分配器。 Go内存分配的设计思想是&#xff1a; 内存分配算法采用Google的TCMalloc算法&#xff0c;每个线程都会自行维护一个独立的内存池&#xff0c;进行内存分配时优先从该内存池中分配&#xff0c;…

第十八章Vue的学习

文章目录什么是VueVue.js的官网介绍环境配置基本语法声明式渲染绑定元素属性双向数据绑定条件渲染列表渲染事件驱动侦听属性Vue对象生命周期什么是Vue 对于Java程序来说&#xff0c;我们使用框架就是导入那些封装了**『固定解决方案』的jar包&#xff0c;然后通过『配置文件』…