首页 > 其他分享 >vue3 setup 语法糖!

vue3 setup 语法糖!

时间:2024-06-08 21:29:21浏览次数:31  
标签:11 title setup value 语法 num 苹果 vue3 99.00

前言
Vue.js 是一款流行的 JavaScript 框架,用于构建用户界面。它提供了一种简洁的方式来创建可维护和可测试的前端应用程序。Vue.js 的核心库只关注视图层,易于上手,同时与其他库或现有项目整合也非常方便。Vue 也完全能够为复杂的单页应用提供驱动。

在 Vue 3 中,引入了 <script setup> 语法,这是一种更简洁、更快速的方式来编写组件。这种语法使得组件的编写变得更加简单和直观,同时也提高了代码的可读性和维护性。 

在这个例子中,我们将使用 Vue 3 和 <script setup> 语法来创建一个简单的搜索组件,展示如何利用 Vue 的响应式系统和计算属性来实现实时搜索功能。 

用法

<template>
  <div>
    <input v-model="searchQuery" placeholder="Search..." />
    <ul v-if="filteredData.length > 0">
      <li v-for="item in filteredData" :key="item.id">
        {{ item.title }} - {{ item.nickname }}
      </li>
    </ul>
    <p v-else>No results found</p>
  </div>
</template>

1. <template> 区域
在 <template> 区域中,我们定义了组件的 HTML 结构:

一个 input 元素,用于输入搜索查询。我们使用 v-model 指令将其值双向绑定到 searchQuery 变量。
一个 ul 列表,用于显示搜索结果。我们使用 v-if 指令来判断 filteredData 数组是否有内容,如果有,就显示搜索结果。
在 ul 列表内部,我们使用 v-for 指令来遍历 filteredData 数组,并为每个结果创建一个 li 元素。
如果 filteredData 数组为空,我们显示一条 "No results found" 的消息。

<script setup>
import { ref, computed } from 'vue';
 
const searchQuery = ref('');
 
const data = ref([
		{
			"id": 89,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092410299525",
			"create_time": "2023-09-24 19:52:47",
			"status": 1,
			"nickname": "昵称",
			"tel": "1527",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 88,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092499519710",
			"create_time": "2023-09-24 08:48:44",
			"status": 1,
			"nickname": "昵称",
			"tel": "663177",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 87,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092497515653",
			"create_time": "2023-09-24 08:44:42",
			"status": 1,
			"nickname": "昵称",
			"tel": "1523",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 86,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092457100101",
			"create_time": "2023-09-24 08:44:41",
			"status": 1,
			"nickname": "昵称",
			"tel": "152366",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 85,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092448101101",
			"create_time": "2023-09-24 08:40:32",
			"status": 1,
			"nickname": "昵称",
			"tel": "152366",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
 
]);
 
const filteredData = computed(() => {
  if (!searchQuery.value) {
    return data.value;
  }
  return data.value.filter(item => {
    return Object.values(item).some(value =>
      value.toString().toLowerCase().includes(searchQuery.value.toLowerCase())
    );
  });
});
</script>

2. <script setup> 区域
在 <script setup> 区域中,我们定义了组件的 JavaScript 逻辑:

首先,我们从 vue 中导入了 ref 和 computed 函数。
然后,我们定义了 searchQuery 变量,用 ref 函数创建一个响应式引用,并初始化为空字符串。
我们还定义了 data 变量,用 ref 函数创建一个响应式引用,并初始化为给定的假数据数组。
接下来,我们定义了 filteredData 计算属性,它根据 searchQuery 的值来过滤 data 数组,并返回匹配的结果。我们使用 Object.values(item).some() 来检查对象中的所有值是否有任何一个包含搜索字符串。
理解
1. 响应式系统
Vue 的响应式系统是其核心特性之一。在这个例子中,searchQuery 和 data 都是响应式引用,这意味着当它们的值发生变化时,Vue 会自动重新渲染组件。这使得我们能够实现实时搜索功能,用户在输入框中输入时,搜索结果会立即更新。

2. 计算属性
filteredData 是一个计算属性,它依赖于 searchQuery 和 data 的值。当这些依赖项的值发生变化时,Vue 会自动重新计算 filteredData 的值。计算属性是缓存的,只有当其依赖项发生变化时,它们的值才会被重新计算。这使得计算属性非常高效,特别是当进行复杂计算或过滤大量数据时。

3. <script setup> 语法
<script setup> 语法是 Vue 3 中引入的一种新的组件编写方式。它提供了一种更简洁、更快速的方式来定义组件。在 <script setup> 中,我们可以直接定义组件的 props、setup 函数和其他组合式 API,无需使用 export default 来导出组件对象。这种语法使得组件的结构更加清。

完整代码

<template>
  <div>
    <input v-model="searchQuery" placeholder="Search..." />
    <ul v-if="filteredData.length > 0">
      <li v-for="item in filteredData" :key="item.id">
        {{ item.title }} - {{ item.nickname }}
      </li>
    </ul>
    <p v-else>No results found</p>
  </div>
</template>
 
<script setup>
import { ref, computed } from 'vue';
 
const searchQuery = ref('');
 
const data = ref([
		{
			"id": 89,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092410299525",
			"create_time": "2023-09-24 19:52:47",
			"status": 1,
			"nickname": "昵称",
			"tel": "1527",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 88,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092499519710",
			"create_time": "2023-09-24 08:48:44",
			"status": 1,
			"nickname": "昵称",
			"tel": "15236",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 87,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092497515653",
			"create_time": "2023-09-24 08:44:42",
			"status": 1,
			"nickname": "昵称",
			"tel": "1577",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		},
		{
			"id": 86,
			"shopid": 13,
			"userid": 21,
			"total": "99.00",
			"num": "1",
			"ord_num": "2023092457100101",
			"create_time": "2023-09-24 08:44:41",
			"status": 1,
			"nickname": "昵称",
			"tel": "177",
			"title": "11苹果11双卡全面屏苹果手机",
			"price": "99.00",
			"info": "推荐购买"
		}
 
]);
 
const filteredData = computed(() => {
  if (!searchQuery.value) {
    return data.value;
  }
  return data.value.filter(item => {
    return Object.values(item).some(value =>
      value.toString().toLowerCase().includes(searchQuery.value.toLowerCase())
    );
  });
});
</script>

原理
1.定义响应式变量:使用 ref 或 reactive 创建响应式变量,用于存储搜索关键词、过滤条件和搜索结果。 
2.编写搜索逻辑:在 setup 函数中创建一个处理搜索的函数。该函数可以根据搜索关键词和其他条件对数据进行过滤,并将结果存储在响应式变量中。 
3.在模板中使用搜索功能:将搜索关键词绑定到输入框,并在触发搜索时调用 search 函数。然后,显示搜索结果。 

标签:11,title,setup,value,语法,num,苹果,vue3,99.00
From: https://blog.csdn.net/FENGZXCjjjjj/article/details/139551320

相关文章

  • 手把手制作Vue3+Flask全栈项目 全栈开发之路实战篇 问卷网站(五)数据处理
    全栈开发一条龙——前端篇第一篇:框架确定、ide设置与项目创建第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。第三篇:setup语法,设置响应式数据。第四篇:数据绑定、计算属性和watch监视第五篇:组件间通信及知识补充第六篇:生命周期和自定义hooks第七篇:路由......
  • Markdown 常用数学符号和语法
    GreekandHebrewlettersSymbolCommandSymbolCommandSymbolCommandSymbolCommandSymbolCommandSymbolCommandα\alphaκ\kappaψ\psiϜ\digammaΔ\DeltaΘ\Thetaβ\betaλ\lambdaρ\rhoε\varepsilonΓ\GammaΥ\Upsilonχ\......
  • VUE3 表单输入绑定
    在前端处理表单时,我们常常需要将表单输入框的内容同步给JavaScript中相应的变量。手动连接值绑定和更改事件监听器可能会很麻烦:template<input:value="text"@input="event=>text=event.target.value">v-model 指令帮我们简化了这一步骤:template<inputv-mod......
  • React核心语法
    目录一、项目搭建二、JSX三、插值3.1条件渲染3.2列表渲染四、事件五、useState状态处理5.1对象形式的状态5.2数组形式的状态作为一个菜菜菜菜鸟,在之前的学习中,一直学习和使用的是VUE框架,在应聘实习公司的过程中,要求使用React框架,于是对自己的学习进行归纳总结,实现......
  • SELinux策略语法以及示例策略
    首发公号:Rand_csSELinux策略语法以及示例策略本文来讲述SELinux策略常用的语法,然后解读一下SELinux这个项目中给出的示例策略安全上下文首先来看一下安全上下文的格式:user:role:type:level每一个主体和客体都有一个安全上下文,通常也称安全标签、标签,由4部分......
  • 05C零碎语法
    C零碎语法目录文章目录C零碎语法1.函数指针2.回调函数3.数据拷贝3.1静态内存分配![请添加图片描述](https://img-blog.csdnimg.cn/direct/54d44e32bb7944f0866d4ca1e2667ce8.png)###4.1动态内存分配字符串6.sizeof()和strlen()的区别7.strcpy()/strncpy()函数7.1**s......
  • vue3 + arcgis.js4.x---线段SimpleLineSymbol
    //polylineconstpolylineGraphic=newGraphic()polylineGraphic.geometry={type:'polyline',paths:[[117.227239,31.820586],[116.227239,33.820586]]}polylineGraphic.symbol=newSimpleLineSymbol({color:'#ff0000&#......
  • vue3 + arcgis.js4.x---面SimpleFillSymbol
    //polygonconstpolygonGraphic=newGraphic()polygonGraphic.geometry={type:'polygon',rings:[[117.227239,31.820586],[116.227239,33.820586],[117.227239,33.820586]]}polygonGraphic.symbol=newSimpleFillSymbol({......
  • Vue3等比例缩放图片组件
    本文由ChatMoney团队出品有些情况我们需要在各种刁钻的情况下都要保持图片比例不变,比如用户缩放窗口等改变布局的情况。实现原理就是通过容器的宽度和内边距在保持你想要的比例。以下是基础功能的组件示例:<template><divstyle="position:relative":style="ratioStr"......
  • vue3+TypeScript
    1.Vue3简介2020年9月18日,Vue.js发布版3.0版本,代号:OnePiece(n经历了:4800+次提交、40+个RFC、600+次PR、300+贡献者官方发版地址:Releasev3.0.0OnePiece·vuejs/core截止2023年10月,最新的公开版本为:3.3.41.1.【性能的提升】打包大小减少41%。初次渲染快......