首页 > 其他分享 >VUE|组合式API

VUE|组合式API

时间:2023-07-21 11:47:30浏览次数:42  
标签:组合式 VUE const vue setup value 语法 API ref

VUE|组合式API

1 setup语法糖

vue项目中, 通常使用setup语法简化书写

setup的特点

  1. 在setup语法中定义变量, 可以直接在模板中使用
  2. 在setup语法中定义函数, 可以直接在模板中使用
  3. 导入的组件对象, 可以直接在模板中使用

常用的组合式API

  • ref
  • computed
  • watch
  • onMounted

2 ref

1) 基础语法

// 声明变量
const 变量 = ref(任意类型数据)

// 使用变量, 需要通过.value属性来访问
变量.value

2) 示例

实现一个计数器

<template>
  <!-- 组件的模板部分 -->
  计数器:{{ count }}
  <button @click="handleClick">点击+1</button>
</template>

<script setup>
import { ref } from 'vue'

// 组件的逻辑部分
// 1. 在setup语法中定义变量, 可以直接在模板中使用
// 2. 在setup语法中定义函数, 可以直接在模板中使用
// 3. 导入的组件对象, 可以直接在模板中使用

const count = ref(0)

function handleClick() {
  count.value++
}
</script>

<style>
/* 组件的样式 */
</style>

使用setup语法, 写切换显示/隐藏案例

img

示例

<template>
  <button @click="handleClick">显示/隐藏</button>
  <div v-show="flag">这是一个div</div>
</template>

<script setup>
import { ref } from 'vue'

// 声明变量
const flag = ref(true)

// 声明函数
function handleClick() {
  flag.value = !flag.value
}
</script>

3 computed

1) 基础语法

const 变量 = computed(() => {
	return 数据
})

2) 示例

计算全名

<template>
  姓: <input type="text" v-model="firstname" /> <br />
  名: <input type="text" v-model="lastname" /> <br />
  全名: {{ fullname }}
</template>

<script setup>
  import { computed, ref } from 'vue'

  const firstname = ref('')
  const lastname = ref('')

  const fullname = computed(() => {
    return firstname.value + lastname.value
  })
</script>

4 watch

1) 基础语法

watch(数据源, 回调函数)

2) 示例

<template>
  单价: 5 <br />
  数量: <input type="text" v-model.number="num" /> <br />
  总价: {{ total }}
</template>

<script setup>
import { ref, watch } from 'vue'

const num = ref(0)
const total = ref(0)

watch(num, () => {
  total.value = num.value * 5
})
</script>

5 onMounted

onMounted是初始化数据的常用函数

<template>
  <ul>
    <li v-for="book in books" :key="book.id">{{ book.name }}</li>
  </ul>
</template>

<script setup>
import { onMounted, ref } from 'vue'

const books = ref([])

onMounted(() => {
  // 在onMounted中给books赋值
  setTimeout(() => {
    books.value = [
      { id: 1, name: 'vue' },
      { id: 2, name: 'gis' },
      { id: 3, name: 'js' },
    ]
  }, 1000)
})
</script>

标签:组合式,VUE,const,vue,setup,value,语法,API,ref
From: https://www.cnblogs.com/tangjielin/p/17559994.html

相关文章

  • VUE|侦听器
    1侦听器1)什么是侦听器可以通过watch配置项,监听已经存在的属性的改变2)语法watch:{//监听data中的firstName属性firstName(){//执行一系列的操作},},watch:{//监听data中的firstName属性firstName(){//执行一系列的操作},},示例......
  • 第十五篇 - Vue添加图标
    参考链接:https://www.yii666.com/blog/45780.html添加图标的两种方式:1.直接使用element-plus/icons-vue(图标名称网址:https://element-plus.gitee.io/en-US/component/icon.html#icon-collection)2.使用svg-sprite-loader自己下载svg图标(SVG图标下载网址:https://www.iconfinder......
  • Vue3 响应式全局对象json 动态绑定界面一 (列表样式)
    效果 man.js  定义响应式全局对象 globalDataconstglobalData=reactive({extTelListData:[{userExten:"1000",userName:"秦岚",callStatus:"通话"},{u......
  • 多语言高并发接入阿里巴巴电商平台,获取实时商品详情数据源码,API接口技术开发分享
    接口数据展示alibaba.item_get-获得商品详情公共参数请求地址:注册key和secret接入请私信名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString......
  • 多语言高并发接入阿里巴巴电商平台,获取实时商品详情数据源码,API接口技术开发分享
    接口数据展示alibaba.item_get-获得商品详情公共参数请求地址:注册key和secret接入名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_sear......
  • 在Vue3中,解决 Echart tooltip 不显示的问题
    为什么在Vue中使用ECharts时图表显示异常?Vue3,中使用reactive及ref会导致ECharts的对象实例被代理成为响应式对象,影响ECharts对内部属性的访问,可能会导致图表无法正确显示等一系列意外问题,且会由于深度监听而极大地降低图表展示性能。解决方案为:使用普通变量声明ECh......
  • 前后端分离实现注册+登录(Vue3.0 + Django3.2)
    博客地址:https://www.cnblogs.com/zylyehuo/一、使用vite+webstorm搭建Vue环境,构建前端1、结构树2、main.jsimport{createApp}from'vue'//import'./style.css'importAppfrom'./App.vue'importrouterfrom"./utils/router";......
  • vue-router安装配置和使用
    title:vue-router安装配置和使用date:2023-07-2017:55:19tags:-vuecategories:-工程-前端top:vue-router安装配置和使用学习vue的第六天,学到了用插件vue-router来实现vue单页面应用的开发,实现页面的路由跳转。以下是个人理解,如有错误请指正。vue-router是vue官......
  • vue强制刷新方法
    一、强制全局刷新方法location.reload();二、强制局部刷新方法<divid="app"><router-viewv-if="isReload"/></div>methods:{reload(){this.isReload=falsethis.$nextTick(()=>{this.isReload=tru......
  • vue小程序图片java后端怎么存
    Vue小程序图片Java后端存储方案在Vue小程序中,我们常常需要处理图片的上传和存储。而Java后端则负责接收上传的图片,并进行存储和处理。本文将介绍一种解决方案,用于实现Vue小程序图片的上传和Java后端存储。问题描述在Vue小程序中,用户需要通过选择图片的方式上传图片。而Java后端......