首页 > 其他分享 >vue3

vue3

时间:2023-10-07 22:37:44浏览次数:37  
标签:vue name 对象 setup vue3 ref

vue3介绍

vue3完全兼容vue2

# tree-shaking是一种消除死代码的性能优化理论
# TypeScript
-javascript:坑---》填坑---》弱类型
-typeScript:强类型语言

 

组合式api和配置项api

vue3 兼容vue2---》vue2的内容,vue3完全适用
vue3 不建议这么用了,建议使用组合式api,不建议使用配置项api

配置项api:

export default {
        data(){
            name:ss
        }
        mehtods:{
            console.log(name)
        }
    }

组合式api:

setup{
        var name =ss
        console.log(name)
    }

 

创建vue3项目

两种方式:

vue-cli:vue脚手架---》创建vue项目---》构建vue项目--》工具链
跟之前一样
- vite :https://cn.vitejs.dev/
-npm create vue@latest
选择即可

运行vue3项目

vue-cli跟之前一样

vite创建的:

npm install   

npm run dev

vite为什么启动的快

冷启动,热加载,按需编译

编程语言的链式调用

对象.changeName('lqz').printName().showAge()

python实现链式调用

class Person:
def changeName(self,name):
self.name=name
return self
def printName(self):
print(self.name)
return self

 

setup函数

使用vue-cli创建的项目来讲

setup的两个注意点

1、setup执行时机:

  在beforeCreate之前执行一次,this是undefined

2、setup参数:

props:值为对象,包含:组件外部传递过来,且组件内部声明接收了的属性。

context:上下文对象

attrs:值为对象,包含:组件外部传递过来,但没有在props配置中声明的属性,相当于this.$attrs

slots:收到的插槽内容,相当于this.$slots

emit:分法自定义书简的函数,相当于this.$emit

 

总结:

setup执行是在beforeCreate,没有this对象,以后不要用this了

如果写setup函数,想接收父组件自定义属性传入的值,需要
export default {
setup(props) {
console.log(props.msg)
},
props: ['msg']
}

如果是vue3的最新写法,想接收父组件自定义属性传入的值,需要
<script setup>
defineProps(['msg'])
</script>

 ref函数

变量要具备响应式---》页面内容变化,变量和变,变量变化,页面也变
普通变量,通过ref绑定响应式
引用类型变量:通过reactive 绑定响应式

 

reactive函数

// 变量要具备响应式---》页面内容变化,变量和变,变量变化,页面也变
// 普通变量值类型,通过ref绑定响应式   数字,字符串
// 引用类型变量:通过reactive 绑定响应式 对象,数组

因为引用了组件所以setup中要传入props,因为组件中有

HomeView.vue

 HelloWorld.vue

 data无法拿出原来的对象,他是代理对象

 

ref

作用: 定义一个响应式的数据
语法: const xxx = ref(initValue)
创建一个包含响应式数据的引用对象(reference对象,简称ref对象)。
JS中操作数据: xxx.value
模板中读取数据: 不需要.value,直接:<div>{{xxx}}</div>
备注:
接收的数据可以是:基本类型(值类型)、也可以是对象(引用类型)类型。

reactive

作用: 定义一个对象类型的响应式数据(基本类型不要用它,要用ref函数)
语法:const 代理对象= reactive(源对象)接收一个对象(或数组),返回一个代理对象(Proxy的实例对象,简称proxy对象)
reactive定义的响应式数据是“深层次的”,无论套多少层,都具备响应式

# 总结:
如果用基本数据类型:数字,字符串,布尔,用ref做响应式
如果是对象类型,用ref和reactive都可以,但是建议使用reactive
如果使用ref包裹对象类型,多了一层value

 

计算监听属性

计算属性

 

 监听属性

 

生命周期

vue2 生命周期---8个

vue3 变了
-想把生命周期写下setup函数中

-把生命周期写在配置项中
beforeDestroy改名为 beforeUnmount
destroyed改名为 unmounted

beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeUnmount
unmounted

<template>
  <div class="home">
    <h1>首页</h1>
  </div>
</template>

<script>

import axios from "axios";
import {
  computed,
  watch,
  reactive,
  ref,
  watchEffect,
  onBeforeMount,
  onMounted,
  onBeforeUpdate,
  onUpdated,
  onBeforeUnmount,
  onUnmounted
} from 'vue'

export default {
  name: 'HomeView',
  setup() {

    // 第一个beforeCrete
    console.log('我是beforeCrete')

    // 第二个Creted
    let name = ref('lqz')
    console.log('Creted')
    // axios.get().then(res => {
    //   name.value = res.data.name
    // })

    // 直接启动定时器
    let t = setInterval(() => {
          console.log('lqz')
        }, 3000
    )
    // 第三个:onBeforeMount
    onBeforeMount(() => {
      console.log('挂载了')
    })

    onBeforeUnmount(() => {
      clearInterval(t)
      t = null

    })


    return {}


  },


}


</script>

torefs

vue3 setup写法

# 以后vue3推荐,把setup函数的代码,直接写在script中
<script setup>
定义变量
写函数
不用return,在html中直接使用
</script>

# 使用组件,直接导入,不需要配置,直接用即可
import HelloWorld from "../components/HelloWorld.vue";
在html中直接用:<HelloWorld msg="NB"></HelloWorld>

# 自定义属性,在子组件中接收

    <script setup>
    defineProps({
      msg: {
        type: String,
        required: true
      }
    })
    </script>

 

标签:vue,name,对象,setup,vue3,ref
From: https://www.cnblogs.com/YeeQX/p/17747622.html

相关文章

  • vue3比vue2优势
    Vue3相对于Vue2有一些显著的优势,主要集中在性能、开发体验和一些新的特性上:性能提升:虚拟DOM的优化:Vue3使用了更高效的虚拟DOM算法,减少了不必要的DOM操作,提高了渲染性能。编译器优化:Vue3的编译器生成的代码更为紧凑和高效,加速了首次渲染和更新速度。更小的包大小:Vu......
  • vue3 新增 mitt 的使用
    在Vue3中,你可以使用 mitt 库来实现事件总线,以便在组件之间进行通信。下面是详细的介绍如何使用 mitt:安装 mitt 库: 首先,确保你已经安装了 mitt 库。你可以使用npm或yarn来安装它:插入代码复制代码npminstallmitt或插入代码复制代码yarnaddmitt......
  • 创建vue3项目、setup函数、ref函数、reactive函数、计算监听属性、生命周期、torefs、
    创建vue3项目#两种方式-vue-cli:vue脚手架---》创建vue项目---》构建vue项目--》工具链跟之前一样-vite:https://cn.vitejs.dev/-npmcreatevue@latest一路选择即可#运行vue3项目-vue-cli跟之前一样-vi......
  • vue3中defineComponent 的作用详解
    转自:https://www.jb51.net/article/263096.htm 这篇文章主要介绍了vue3中defineComponent 的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 vue3中,新增了defineComponent,它并没有实现任何的逻辑,只是把接收的......
  • 是用非构建工具开始使用Vue3
     <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • Vue3中shallowReactive 与 shallowRef 的用法
    转自:https://blog.csdn.net/qq_54527592/article/details/119840044  shallowReactive与shallowRef   shallowReactive:只处理对象最外层属性的响应式(浅响应式)。   shallowRef:只处理基本数据类型的响应式,不进行对象的响应式处理。   什么时候使用?     ......
  • Vue3
    vue3.3.4+vite4.4.91.组件安装1.1ElementPlusnpminstallelement-plus--savemain.jsimportElementPlusfrom'element-plus'import'element-plus/dist/index.css'constapp=createApp(App);app.use(ElementPlus).mount('#app'......
  • Vue3 Div 与 v-for 的配合应用,超出自动带滚动条
    效果图 代码<li><ahref="javascript:;"class="IndReaflexCHuans"><i></i><p>当前会议[0]</p></a><divstyle="height:80%;overflow:auto;"><divv-for="......
  • vue3最基础入门,vue3 + element plus实战pc端后台管理,从零到一设计pc端项目
    教程地址 https://www.bilibili.com/video/BV1C3411s7bV 稳定、快速、免费的前端开源项目CDN加速服务,共收录了4387个前端开源项目https://www.bootcdn.cn/all/ Normalize.css使浏览器呈现所有HTML元素更加一致,并且符合现代web标准。Normalize.css只作用于需要......
  • vue3 使用 i18n
    安装官网:https://vue-i18n.intlify.dev/api/general.htmlpnpmaddvue-i18n@9使用//@/locale/index.tsimportappConfigfrom"@/configure/app.config.ts";import{nextTick}from'vue'importtype{Ref}from'vue'import{createI18n}......