• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 介绍Vue3中Composition API及其核心用法

介绍Vue3中Composition API及其核心用法

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Vue3用法,Composition API核心用法等相关知识,希望对您有所帮助

Vue3中Composition API的核心用法


什么是Composition API?

Composition API也叫组合式API,是Vue3.x中的新特性。通过创建Vue组件,我们可以将接口的可重复部分提取到可重用的代码段中,没有Composition API之前Vue相关业务的代码需要配置到option的特定区域,如果在大型项目中这种方式会导致后期的维护性比较复杂,同时代码可复用性不高,Vue3的Composition API就是解决这个问题的。


在setup中使用ref和reactive定义响应式数据

使用ref和reactive定义数据前,需要从vue中进行解构。

import {ref,reactive} from 'vue';

ref和reactive均可以定义响应式数据,定义的数据在Vue模板中可以直接获取,但是如果通过方法获取的话,ref和reactive定义的数据在获取上有一定的差异,ref定义的需要通过value属性间接获取,reactive定义的数据可以直接获取,在修改这两类数据也是如此。

export default {  setup() {    // 使用ref定义响应式数据    const title = ref("这是一个标题");    // 使用reactive定义响应式数据    const userinfo = reactive({      username: "张三",      age: 20    });    // 获取reactive中的属性可以直接获取    const getUserName = () => {      alert(userinfo.username)    };    // 获取ref中的数据需要通过value属性    const getTitle = () => {      alert(title.value)    };    const setUserName = () => {      // 修改reactive中的属性可以直接修改      userinfo.username = "修改后的张三"    };    const setTitle = () => {      // 修改ref中的属性,需要通过value      title.value = "这是修改后的标题"    };    return {      title,      userinfo,      getUserName,      getTitle,      setTitle,      setUserName    }  },  data() {    return {      msg: "这是Home组件的msg"    }  },  methods: {    run() {      alert('这是Home组件的run方法')    }  }}

可以使用v-model直接进行双向数据绑定。

<input type="text" v-model="title"><input type="text" v-model="userinfo.username">


toRefs解构响应式对象数据

之所以需要toRefs是因为通过toRefs解构的数据还具有响应式的特性,通过传统的拓展运算符进行解构则不具备了响应式的特性,这就是为什么需要toRefs的原因。

从vue中解构出toRefs

import {ref,reactive,toRefs} from 'vue';

setup的返回数据中进行如下的修改

return {  title,  userinfo,  getUserName,  getTitle,  setTitle,  setUserName,  ...toRefs(article)}


setup中的计算属性

setup中的计算属性和一般的计算属性类似,区别在于无法读取到this。

setup() {    let userinfo = reactive({      firstName: "",      lastName: ""    });    let fullName = computed(() => {      return userinfo.firstName + " " + userinfo.lastName    })    return {      ...toRefs(userinfo),      fullName    }  }


readonly:深层的只读代理

readonly存在的意义是能够将响应式对象转换为普通的原始对象。

引入readonly。

import {computed, reactive,toRefs,readonly} from 'vue'

给readonly传入响应式对象。

let userinfo = reactive({  firstName: "666",  lastName: ""});userinfo = readonly(userinfo);


setup中的watchEffect

setup中的watchEffect具有以下几个特点。

能够监听setup中的数据变化,数据一旦变化就会执行watchEffect中的回调函数。

及时setup中的数据没有变化,初始的时候也会执行一次。

setup() {    let data = reactive({      num: 1    });    watchEffect(() => {      console.log(`num2=${data.num}`);    });    setInterval(() => {      data.num++;    },1000)    return {      ...toRefs(data)    }  }


setup中的watch

使用watch监控数据的基本方法。

setup() {    let keyword = ref("111");    watch(keyword,(newData,oldData) => {      console.log("newData是:",newData);      console.log("oldData是:",oldData);    })    return {      keyword    }  }


watch与watchEffect的区别

watch在首次页面渲染的时候不会执行,但是watchEffect会。

watch能够获取到数据状态变化前后的值。


setup中的生命周期钩子函数


介绍Vue3中Composition API及其核心用法


在setup中生命周期钩子类似于直接调用一个函数。

setup() {  let keyword = ref("111");  watch(keyword,(newData,oldData) => {    console.log("newData是:",newData);    console.log("oldData是:",oldData);  })  onMounted(() => {    console.log('onMounted');  })  onUpdated(() => {    console.log('onUpdated');  })  return {    keyword  }}

setup中的props

父组件进行传值。

<Search :msg=&qu
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 介绍Vue3中Composition API及其核心用法

相关文章

  • 分享个人推荐的Laravel或其它框架的编程规范
  • 避坑!Laravel数据库迁移功能的一个坑
  • 浅析如何从小程序跳到H5页面/微信小程序跳转到H5页面实例解析
  • Photoshop设计金属质感的网页按钮
  • WordPress教程:WordPress博客添加自定义鼠标样式
  • 解决LNMP环境安装WordPress不显示主题,无法编辑的教程
  • AI画笔工具在字体设计中的灵活运用
  • 聊聊ThinkPHP3.2.3从php5升级到php7艰辛之路
  • PS打造线描风格舞者壁纸平面作品设计制作教程
  • 浅谈小程序怎么实现“五星评价”功能(支持点击+滑动)

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • PHP高级检索功能的实现以及动态拼接sql
    • 帝国CMS灵动标签去除重复标题信息
    • 浅析Vue中的Vue.set和this.$set,看看使用场景!
    • 帝国cms忘记后台登录认证码和安全问题的解决方法
    • Windows7安装OpenSSH服务的步骤详解(亲测有效)
    • 修改织梦cms标签TAG不限制长度
    • PHP中怎么解决serialize函数中文乱码的问题
    • 宝塔Linux面板之修改MySQL默认保存位置
    • Photoshop制作网页加载动画教程
    • PhotoShop+coreldRAW打造喜迎国庆节海报制作教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有