首页 > 其他分享 >Vue 3 setup

Vue 3 setup

时间:2024-05-04 19:44:06浏览次数:15  
标签:Vue 函数 对象 age let setup name

【一】setup函数

setup函数的设计是为了使用vue3的组合式api,setup函数必须要有返回值,在里面定义的变量必须要返回出去才能在html里面使用

【1】定义变量

setup() {
    // 1.定义变量 跟正常写js是一样的
    let name = 'hqq'
    let age = 18 

    // setup函数必须要有返回值,返回定义的对象后才能使用这个对象
    return {name, age}
  }

【2】定义函数

setup() {
    // 2.定义函数
    let handleAdd = () => {
      age++ 
    }
    let handleChangeName = (n) => {
      name = n
    }
    // setup函数必须要有返回值,返回定义的对象后才能使用这个对象
    return {handleAdd, handleChangeName}
  }

【二】实现响应式

上面定义的变量是没办法实现响应式的,如果要实现响应式,给变量用ref或者reactive函数包裹,使其变成对象,这时候他的值就存在了对象的value属性里面

【1】ref函数

  setup() {
    // 1.定义变量 跟正常写js是一样的
    let name = ref('hqq')
    let age = ref(18) //用ref包裹实现响应式
    // 2.定义函数
    let handleAdd = () => {
      age.value++ // age用ref包裹之后就变成了一个对象,它的值在这个对象value里面,所以需要.value++
    }
    let handleChangeName = (n) => {
      name.value = n
    }
    // setup函数必须要有返回值,返回定义的对象后才能使用这个对象
    return {name, age, handleAdd, handleChangeName}
  }

【2】recative函数

  setup() {
    // 1.定义对象 要想对象里面的内容实现响应式,就需要用reactive函数包裹起来对象
    let userInfo = reactive({
      name: 'hqq',
      age: 18,
      hobby: '运动'
    })
    // 2.定义函数
    let handleAdd = () => {
      userInfo.age++
    }
    return {userInfo, handleAdd}
  }

【三】计算属性

计算属性computed,需要导入使用,computed函数包含一个对象,对象里面可以写两个函数,get和set,get用于获取值,必须要有返回值,返回值就是获取的值,set用于修改值,set函数有一个参数,就是修改后的值。

【1】get函数

setup() {
    // 定义一个userName对象,里面定义firstname和lastname
    let userName = reactive({
      firstName: '',
      lastName: ''
    })
    // 计算属性computed里面填写一个对象
    // 对象里面可以写两个函数 get 和 set
    userName.fullName = computed({
      // get函数是用于获取值 必须要有返回值
      get(){
        return userName.firstName + userName.lastName
      }
    })
    return {userName}
  }

【2】set函数

  setup() {
    // 定义一个userName对象,里面定义firstname和lastname
    let userName = reactive({
      firstName: '',
      lastName: ''
    })
    userName.fullName = computed({
      get(){...},
      // set函数用于修改值,可以传一个参数,这个参数就是修改后的值
      set(value){
        // 这里面可以写修改的逻辑
        console.log(value)
      }
    })
    return {userName}
  }

【四】监听属性

【1】监听一个对象

  setup() {
    let age = ref(18)
    let handleAdd = () => {
      age.value++
    }
    // 监听一个对象
    // 监听属性watch函数,第一个参数写监听的对象,
    // 第二个参数是一个函数,函数的有两个参数,分别是修改后的数据和修改前的数据
    watch(age, (newValue, oldValue) => {
      console.log('新年龄' + newValue)
      console.log('老年龄' + oldValue)
    })
    return {age, handleAdd}
  }

【2】监听对象里的某个值

  setup() {
      // 定义一个对象
    let person = reactive({
      name: 'hqq',
      age: 18,
      hobby: '运动'
    })
    }
	// 定义点击事件 点击对象的name变成吴彦祖
    let handleChangeName = () => {
      person.name = '吴彦祖'
    }

    // 监听对象的某个值
    // watch函数的第一个参数也变成了一个函数,需要返回一个需要监听的值
    // 第二个参数是一个函数,函数的有两个参数,分别是修改后的数据和修改前的数据
    watch(() => person.name, (newValue, oldValue) => {
      // 在这里可以写一些变化后的逻辑
      console.log('变吴彦祖啦')
    })
    return {age, handleAdd, person, handleChangeName}
  }

【五】生命周期

【六】toRefs

​ 在Vue 3中,toRefs函数是一个实用工具,用于将响应式对象转换为可被解构的引用对象。在Vue 2中,直接使用refreactive创建的响应式对象,如果直接解构或访问其属性,会导致丢失响应性。而toRefs可以解决这个问题。

<template>
  <main>
    <p>姓名---{{name}}</p>
    <p>年龄---{{age}}</p>
    <p>爱好---{{ hobby}}</p>
  </main>
</template>

<script>
import {toRefs} from "vue";

export default {
  name: 'home',
  setup() {
    // 使用了toRefs包裹起来对象之后 person就变成了一个可被解构的响应式对象
    let person = toRefs({
      name: 'hqq',
      age: 18,
      hobby: '运动'
    })
    // 通过...展开,就可以直接在html中以键名获取对应的value
    return {...person}
  }

}
</script>

【七】script setup语法糖

标签:Vue,函数,对象,age,let,setup,name
From: https://www.cnblogs.com/Hqqqq/p/18172603

相关文章

  • Vue2基础
    【一】初识Vue【1】什么是VueVue是一套用于构建用户界面的渐(逐渐)进(递进)式JavaScript框架Vue可以自底向上逐层应用,由国人尤雨溪开发采用组件化模式,提高代码的复用率、让代码更好维护声明式编码方式,让编码人员无需直接操作DOM,提高开发效率使用虚拟DOM+优秀的Diff......
  • 混入、插件、插槽、vuex、本地存储
    【混入】#mixin(混入)功能:可以把多个组件共用的配置提取成一个混入对象,不需要在每个组件中都写了使用步骤   。。。【插件】1#1写plugins/index.js2importVuefrom"vue";3importaxiosfrom"axios";4importhunrufrom"@/mixin";......
  • ​ Vue Router
    VueRouter是Vue.js官方的路由管理器(路径跳转)。它和Vue.js的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、查询、通配符基于Vue.js过渡系统的视图过渡效果细粒度的导航控制带有自动激活的C......
  • Vue入门到关门之组件
    一、组件1、什么是组件在Vue.js中,组件是构建用户界面的可重用和独立的模块。每个Vue组件都封装了自己的模板、逻辑和样式,使得代码可以更加模块化、可维护性更高。通过组件化,你可以将界面拆分成独立的、可复用的部分,每个部分都有自己的功能和样式,这样可以更容易地管理复杂的界面,......
  • Vue入门到关门之第三方框架elementui
    1、什么是ElementUI?ElementUI是一个基于Vue.js的组件库,它提供了丰富的UI组件和一套完整的解决方案,用于快速构建现代化的Web应用程序。ElementUI的目标是帮助开发者快速构建出美观、易用的界面,并提供了丰富的组件,包括但不限于按钮、表单、表格、对话框、菜单、导航、布......
  • Vue入门到关门之Vue项目工程化
    一、创建Vue项目1、安装node环境官网下载,无脑下一步,注意别放c盘就行Node.js—RunJavaScriptEverywhere(nodejs.org)需要两个命令npm---->pipnode--->python装完检查一下,helloworld检测,退出crtl+c2、搭建vue项目环境装cnpm这个包,下载东西会快很多,装模块......
  • VUE
    VUE(1)介绍VUE是渐进式框架可以一点一点地使用它,只用一部分,也可以整个工程都使用它Vue特点易用通过HTML、CSS、JavaScript构建应用灵活不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩。高效20kBmin+gzip运行大小超快虚拟DOM最省心的优化(2)引入vu......
  • Vue package-lock.json的作用
    package-lock.json的作用 "node_modules/@aashutoshrathi/word-wrap":{"version":"1.2.6","resolved":"https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",&......
  • 前端 Vue webpack配置之 webpack.config.js 文件配置
     Webpack在执行的时候,除了在命令行传入参数,还可以通过指定的配置文件来执行。默认情况下,会搜索当前目录的 webpack.config.js 文件,这个文件是一个node.js模块,返回一个json格式的配置信息对象,或者通过 --config 选项来指定配置文件。.输入命令:webpack,即可按照webpack.c......
  • 前端 Vue-cli中 vue.config.js 的配置详解
    Vue-cli3/Vue-cli4 目录结构├──README.md #说明|--dist #打包后文件夹├──babel.config.js #babel语法编译├──package-lock.json├──public #静态文件夹,这类资源将会直接被拷贝,而不会经过webpack的......