用Vue3.0写出一个简单的TodoList案例

2024-01-28 05:50

本文主要是介绍用Vue3.0写出一个简单的TodoList案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于工作需要,以后可能会敲vue代码了,所以今天开始会零散的记录一下自己学Vue3.0的一些案例。
就从经典的TodoList案例开始吧~

也算补上之前react的todolist案例的坑吧🎁


简单的在草稿纸上写出页面的整体设计思路为3层div包裹,希望刚开始学习的时候,一定要自己去实际动手去画出大概的效果图。再简单不过的页面设计了。

image.png

一.在vue的template标签中编写html文件

根据上面的草图来写出简单的结构,非常简单的代码。三个<div>来完成草稿的大概实现。

image.png

设计静态页面为下图所示。

image.png

二.最首先的功能就是,如何获取用户输入框的值

在vue里是用v-model这样的绑定方式来双向绑定一个变量的,我这里用的是vue3中<script>标签的setup语法糖编写的代码,书写风格和react非常相似,也是我比较喜欢的写法。

这里我们需要用到vue里的的ref方法,先引入在说吧。

image.png

看一下Vue官方对ref的解释

image.png

在我看来,这个和react的useRef返回一个带有current属性的对象很类似。

经过了解,在vue中,定义一个基本类型,要用ref,定义一个引用类型要用reactive,本质上使用ref(hhh)其实就是调用了reactive({value:"hhh"})

(补充说明一下:vue在<template>标签中可以自动获取ref
变量对象的value,但是在<script>标签中使用时,要带上.value才可以。)

回到正题

了解了ref的使用,我们就先定义一个变量叫做newTodo来绑定input框来获取用户的输入。

image.png

此时newTodo.value就和input框的value绑定了。

三.设计添加button功能的实现

在这个按钮之前,我们要设定一个空的数组,来接收用户的输入数据,并且在里面再添加一些默认的数据来显示。

image.png

接下来先渲染出我们默认的数据。在template标签中写

image.png

这里我在<ul>标签里加了v-if判断语句,判断这个doLists数组是否为空数组,如果为空,则不渲染。<li>标签就是简单的v-for遍历。

别忘了绑定一个key

image.png

按钮的逻辑其实很简单,就是往这个todoLists数组里面添加数据,然后将用户输入的值清空。

image.png

(再提醒一下,在<script>标签里通过ref返回对象需要自己去调用value属性才可以使用)

试一下效果

image.png

可以正常添加并且显示。

四.设置一下添加按钮的逻辑判断

现在有一个情况就是我点击添加的时候,如果用户输入的值是空值,依旧能添加,现在设计不允许这种情况发生。实现的方式有很多,我个人想设计为:当用户输入值为空,按钮禁止使用。

image.png

刚开始非常不习惯,因为在react里写js代码很明确需要在{}里写,但是vue全是引号里编写,在这里先暂且这样理解吧,当你使用v-指令语法时候,是个属性的=后面的""里就是要写js代码了。

image.png

所以这里我们不能写原生的disabled属性,这样vue会把后面的三元表达式认为是字符串。

效果如下:

image.png

五.实现item的删除功能

我们希望在每个item的后面出现一个删除按钮,当我们不喜欢这个事件的时候,可以直接删除。

image.png

页面效果如下

image.png

这时候开始思考删除按钮的逻辑。我这里有两种设计思路;

1.用filter去筛选出不等于当前index索引值的数组重新渲染

2.用slice去组合当前item之前和之后的数据重新渲染。

方法一.

我们需要拿到当前项目的index值,很简单,去拿v-for指令的第二个参数,同时将该值传入给我们的del函数

image.png

(如果之前你了解过react,那么这里你一定会有疑惑,因为react这种场景是需要使用高阶函数返回这个del函数的,不然就会造成组件刚挂载就执行的效果,但是vue不会,但是其实vue背后帮你写成了这样的代码)

image.png

我也更习惯这样的写法。

接下来就是方法的逻辑了。因为我点击的时候,拿到的index是当前我要在todoLists里删除的那个选项索引,那么我们反向思考,我把那些索引不等于这个值的那些item重新渲染不就好了吗?

image.png

这样就可以实现我们要的效果了

image.png

点击睡觉后面的按钮完成需求。

image.png

方法二.

其实思路是一样的,都是反响思考,避开我们拿到的这个index

image.png

slice这个方法我之前的文章中细讲了很多了,不再过多赘述了,效果也是可以正常实现的。

方法三

这个方法是我临时想到的,试一试可以不,用splice去处理。

image.png

事实证明是可以的

image.png

让我们删除谢谢

image.png

我这里多点了几个,没发现bug。
大致功能就这样,后续还会更新样式和更加细节的功能。

这篇关于用Vue3.0写出一个简单的TodoList案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/652649

相关文章

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

禁止HTML页面滚动的操作方法

《禁止HTML页面滚动的操作方法》:本文主要介绍了三种禁止HTML页面滚动的方法:通过CSS的overflow属性、使用JavaScript的滚动事件监听器以及使用CSS的position:fixed属性,每种方法都有其适用场景和优缺点,详细内容请阅读本文,希望能对你有所帮助... 在前端开发中,禁止htm