热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

vue3组件内写法的变化(核心篇)——vue2和vue3的基础用法对比第四篇

组件内的使用:(1)生命周期 (2)变量的定义与使用 (3)方法的定义与使用 (4) 父子组件间的数据交互  (5)computed计算属性和watch的使用组件中常用的东西无非上

组件内的使用:

(1) 生命周期 (2) 变量的定义与使用 (3) 方法的定义与使用 (4) 父子组件间的数据交互  (5) computed计算属性和watch的使用

组件中常用的东西无非上面5种,其中(4)、(5)在下一篇文章中介绍

vue3中最大的变化莫过于vue组件内写法的变化了。之前的是data、methods、computed、生命周期等每一个功能都是相对独立的模块,但是vue3中所有的东西都被包含setup函数里,编写的方式发生了翻天复地的变化。

(1) 生命周期

说到setup()setup这个函数是在数据创建之前,也就是说在原本的created生命周期之前。因此在setup里面就不能用之前的生命周期了,所有vue3出了新的写法。

setup里面没有 beforeCreate 和 created 因为其本身就代替这两个函数  

important { defineComponent,onBeforeMount,onMouted,onBeforeUpdate,onUpdated,onBeforeUnmount,onUnmouted } from

export default defineComponent({

  name:"lifecycle",

  setup(){

    // 对应 beforeMount 挂载前

    onBeforeMount(() => { 代码 }) 

    // 对应 mounted 挂载后

    onMouted(() => { 代码 }) 

    // 对应 beforeUpdate 更新前

    onBeforeUpdate(() => { 代码 })  

    // 对应updated更新后

    onUpdated(() => { 代码 })

    // 对应beforeDestroy 销毁前

    onBerforeUnmount(() => { 代码 }) 

    // 对应 destroyed 销毁后

    onUnmouted(() => { 代码 }) 

  }

})

 (2) 变量的定义与使用

vue2.0版本是在data定义的当前组件的全局变量,但是vue3.0中没有规定要在哪里写了,只要写在最后的return就好了

setup(){
  const a=1,b=2

  //如此就定义了一个的当前组件的全局变量

  return{a,b}
}

但是上面写的只是普通的变量,vue2.0中在data写的变量还有最重要的功能就是都是响应式变量,那么在vue3改怎么定义响应式的变量呢?

vue3中又两种方式,一种是ref,另外一种是reactive。一般来说ref是用来定义基本类型的,reactive是用来定义引用类型的,当然用ref来定义引用类型也了可以他会自动转化reactive来定义。

注意:用ref定义的变量在使用时要加.value变量名.value

important { defineComponent,ref,reactive} from

export default defineComponent({

  name:"variable",

  setup(){  

    //ref的用法

    const a = ref(1)

    a.value //获取a的值

    const arr = ref([1,2,3])

    arr.value[0] //获取arr的第一个值

    //reactive的用

    const b = reactive({

      x:1,

      y:2

    })

    b.x //获取b的x

    return{a,arr,b} 

  }

})  

 (3)  方法的定义与使用

在vue2.0中方法都写在methods中,而在vue3没有这样的要求,它和变量的定义有点像,都只需要在最后的return中写上就好了

important { defineComponent } from

export default defineComponent(){

  setup(){

    //第一种方式

    const example = ()=>{

      fn() //调用fn

    }

    example() //调用example

    // 第二种方式

    function fn(){

      //调用example 

    }

    fn() //调用fn

    return {

       example,

       fn

    }

  }

}

以前变量和方法的定义是分散的,现在变成这样的话就可以把方法用到的变量和方法写在一起了,变成了一个整体的模块

 



推荐阅读
  • 单点登录(vue) 的实现及原理解析
    本文主要介绍了单点登录(vue) 的实现及原理解析。单点登录是指一个账号可以在多个系统中登录的功能,通过点击系统图标进入其他系统,无需重复登录流程。文章详细解释了如何获取返回的数据、前端如何处理token、后台如何实现登录功能以及重定向到前端页面的地址等流程。前端工作包括开发一个新页面来接收后台返回的地址并处理token。通过token进行通信,实现系统首页的重定向。 ... [详细]
  • 智能消息服务数字短信使用FAQ
    本文介绍了智能消息服务数字短信的开通流程和操作步骤,包括开通数字短信的路径、申请流程、控制台操作以及API接口对接模式。同时还介绍了数字短信模板的创建规则和要求,包括审核状态的说明和建议。 ... [详细]
  • 本文详细介绍了如何创建和使用VUE uni-app开发环境,包括通过HBuilderX可视化界面和通过vue-cli命令执行的方法。文章内容简单清晰,易于学习与理解。通过学习本文,读者可以深入了解VUE uni-app开发环境,并通过实践验证掌握具体的使用情况。编程笔记将为读者推送更多相关知识点的文章,欢迎关注! ... [详细]
  • 本文讨论了在Vue组件中,为什么data属性要返回一个函数的问题。通过示例代码,说明了对象变量和对象函数在数据更改前后的影响。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 随着前端技术的发展,越来越多的开发者开始使用react、vue等web框架,但很少有人深入理解这些框架的源码。然而,这些框架底层都是由原生的javascript构建而成。对于初学前端的人来说,可能会认为javascript很容易上手,但实际上只是因为它被高度封装了。与能够使用封装类的人相比,能够理解框架原理的人则处于另一个层面。本文将深入剖析jquery源码,探寻框架底层的原理,帮助读者更好地理解web框架的运行机制。 ... [详细]
  • 最近开发了一套ERP管理系统,想为整个系统添加新手操作教程,方便不熟悉的同事学会如何操作整个系统。就类似APP中的新手操作教程,同游戏中的一级进入游戏后的游戏指引,如何在网页中实现呢?整个系统是 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • Vue3中setup函数的参数props和context配置详解
    本文详细介绍了Vue3中setup函数的参数props和context的配置方法,包括props的接收和配置声明,以及未通过props进行接收配置时的输出值。同时还介绍了父组件传递给子组件的值和模板的相关内容。阅读本文后,读者将对Vue3中setup函数的参数props和context的配置有更深入的理解。 ... [详细]
  • 在package.json中有如下两个对象:husky:{hooks:{pre-commit:lint-staged}},lint-staged:{src** ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 本文详细介绍了插槽的概念和使用方法,插槽是组件的一块HTML模板,父组件可以通过插槽来决定组件的显示和功能。文章中解释了插槽的两个核心问题:显示和怎样显示。同时还介绍了多个插槽和带name属性的插槽的定义方法。另外,还介绍了作用域插槽的使用,以及在插槽中传递父组件的对象值的方法。最后,还介绍了两种情况下的属性传值和模版重写的实现方式。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
author-avatar
mobiledu2502921107
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有