vue小案例TodoList

这篇具有很好参考价值的文章主要介绍了vue小案例TodoList。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.首先我们分析怎么把一个页面拆成多个组件,如下图,我们可以拆成MyHeader、MyList、MyItem、MyFooter,其中MyList包含MyItem

vue小案例TodoList

2.观看如下代码(我们把MyItem作为MyList的子组件,在父组件中使用v-for指令来循环展示子组件,我们选择把数据放在MyList中,我们在子组件中使用props来接收父组件传过来的数据)vue小案例TodoList

注意!!!

注意此处我们使用v-for循环遍历todos里的每一个对象,我们将每个对象传给子组件的时候,指令名的前面需要加:,如上图中的:todo="todoObj",如果我们写成todo="todoObj"的话,我们将会得到一下结果,因为此时,vue不会将todoObj视为对象,而我们加上:时,todoObj将会变成一个表达式vue小案例TodoList

 vue小案例TodoList

3.相对于MyList的子组件MyItem,通过props接收而来的数据决定MyItem中的展示

vue小案例TodoList

4.接下来我们来做MyHeader部分(我们需要在MyHeader部分的input框中输入数据,并且把它封装成一个对象,但是为了区分id,我们可以使用UUID,但是UUID包的内存较大,我们可以使用UUID的变种nanoid)vue小案例TodoList

接下来,我们就会遇到一个难题,我们在MyHeader中产生的数据,如何传给对象数组数据所在的MyList呢?由于我们还没有学到全局事件总线等方法,我们这里可以采用将数据上调的方式来解决vue小案例TodoList

我们采取将数据上调到父组件APP中,再让子组件通过props来接收,注意此处我们将addTodo作为一个函数传给子组件,让子组件用props接收,然后再让子组件在合适的情况下调用,实现了子组件向父组件传递数据的功能

vue小案例TodoList

 vue小案例TodoList

5.接下来我们开始做勾选框模块

写法一:

vue小案例TodoList

接下来涉及到一个问题,我们怎么把MyItem(孙组件)中勾选发生的变化传到APP(爷组件)中发生对象数组中的done值的变化呢?

我们这里可以采用爷传子,子传孙的方法,我们可以给APP(爷组件)绑定一个函数,将函数逐层传递到MyList(子组件),再传到MyItem(孙组件),例如下方vue小案例TodoList

vue小案例TodoList

孙组件用props接收后,通过this.的方式,把id逐层传给APP组件,引起对象数组done值的变化

 vue小案例TodoList

 vue小案例TodoList

写法二(我们可以使用v-model来实现监视,但是不建议这么做,因为props为只读属性,当props里的浅层次属性发生变化时会报错,例如图中的a;当v-model读取props中的深层次属性时,不会报错,但不建议这么做):vue小案例TodoList

 6.接下来我们来做删除模块,由于数据在APP中,我们在MyItem组件中给删除按钮添加点击事件,我们获取APP传来的todo对象数组中的id,我们将id传给爷组件APP,这时又是老生常谈的问题,孙组件向爷组件传递数据,我们可以让APP组件下方一个函数,依次传递给MyList和MyItem,通过props接收,再在子组件标签上带上该函数vue小案例TodoList

 vue小案例TodoList

 7.接下来我们来做统计模块,首先先将APP组件中的对象数组数据传给MyFooter组件,MyFooter组件利用props来接收,让MyFooter组件来计算统计模块,这里计算已完成的个数,用到了数组中的reduce方法

注意,此处的checkAllTodo方法是由APP组件传过来的

vue小案例TodoList

注意图中的isAll计算属性是是由total和doneTotal计算而来的,其中total是返回APP中对象数组的总长度,而 checkAllTodo是计算对象数组中被勾选的个数,isAll只需要判断total的值和checkAllTodo的值是否相等即可

方式一:

vue小案例TodoList

方式二:(第二种方式使用的是v-model,其中get()方法判断单选框是否与对象数组的长度相一致,如果一致就勾上;set()方法使其勾选时,通知APP组件遍历对象,勾上所有对象的done值,其中这里计算属性就无法使用简写形式,因为其利用到了赋值操作

vue小案例TodoList

最后我们来完成清除已完成任务,同样在APP中声明此方法,再传递给MyFooter组件,组件用props接收vue小案例TodoList

vue小案例TodoList

我们可以通过js中的本地存储将数据存储起来vue小案例TodoList

我们想要给TodoList案例新加一个编辑功能,应该如何实现呢?我们通过全局事件总线来进行通信vue小案例TodoList

vue小案例TodoList 

 vue小案例TodoList

 

 

总结:vue小案例TodoList文章来源地址https://www.toymoban.com/news/detail-463159.html

到了这里,关于vue小案例TodoList的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2-浏览器本地存储(WebStorage)及完善TodoList案例、组件自定义事件及完善TodoList案例

    🥔:山不向我走来,我便向它走去 更多Vue知识请点击——Vue.js 存储内容大小一般支持5MB左右(不同浏览器可能还不一样) 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。 1.相关API (1) xxxxxStorage.setItem(\\\'key\\\', \\\'value\\\'); 该方法接受一个键和值作为参

    2024年02月12日
    浏览(55)
  • 用vue.js写案例——ToDoList待办事项 (步骤和全码解析)

    目录 一.准备工作 二.编写各个组件的页面结构 三.实现初始任务列表的渲染 四.新增任务 五.删除任务 六.展示未完成条数 七.切换状态-筛选数据 八.待办事项(全)代码 在开发“ToDoList”案例之前,需要先完成一些准备工作,包括创建项目、引入 BootStrap 样式文件和搭建基本项

    2024年04月12日
    浏览(133)
  • 第二十二章 案例TodoList之鼠标事件

    本小节,我们需要使用鼠标事件,给 Item 组件添加背景颜色,并显示删除按钮。 添加鼠标移入和移出事件 主要的改造点: 初始化一个状态数据,用于控制背景颜色和删除按钮 当值为 true 的时候,背景颜色变为灰色,删除按钮显示。为 false 的时候,背景颜色变回白色,删除

    2024年02月08日
    浏览(46)
  • React 入门:实战案例 TodoList Item鼠标悬浮效果

    本文实现鼠标悬浮到 Todo 记录上时的样式,以及悬浮到 Item 组件 UI 上时,显示【删除】按钮,鼠标离开时隐藏【删除】按钮。 本文通过给事件处理来实现。 (如果你对 React 的事件处理不了解,请阅读本专栏前面的【事件处理】章节) onMouseEnter:当鼠标悬浮到某个元素上时

    2024年02月12日
    浏览(34)
  • 【异常解决】vue项目localhost:8080无法访问此网站或者无法访问此页面,localhost拒绝了我们的连接请求

    前端页面使用的是vue,vue项目启动成功,没有任何报错,服务控制台已出现APP访问地址,如下图所示: 点击访问地址,浏览器打开后页面先是空白,然后过了一会儿显示无法访问此网站,localhost拒绝了我们的连接请求页面,信息如下: 出现此问题的原因有以下几种:请挨个

    2023年04月25日
    浏览(73)
  • 若依VUE 从一个页面跳转另一个页面并携带参数

    由于火狐浏览器某些版本不支持 :to 写法,测试后把同事的代码优化一下 第一个页面 跳转路由js 另一个页面

    2024年02月10日
    浏览(46)
  • vue中data的数组怎么操作会重新渲染页面,怎么操作不会渲染页面

    目录 会渲染页面的操作 这是为什么呢 不会导致页面渲染的操作  通过索引值改变数组导致页面不渲染的解决方法 this.$set的实现原理 push() pop() shift() unshift() splice() sort() reverse() vue2.0还增加个方法可以观测Vue.set(items, indexOfItem, newValue) Vue.set()的用法 filter(), concat(), slice() 。这些

    2024年01月16日
    浏览(40)
  • vue怎么实现页面跳转

    在 Vue 中,可以使用 vue-router 插件来实现页面跳转。首先需要在 main.js 文件中引入 vue-router 并配置好路由。然后在组件中使用 标签或者 this.$router.push() 方法来实现页面跳转。 示例: 1.main.js 中引入并配置路由 2.使用 标签在页面中实现页面跳转 3.使用 this.$router.push() 方法在组件

    2024年02月15日
    浏览(38)
  • vue 弹出框 引入另一个vue页面

    为什么要这么做,适用于在一个页面逻辑比较多的时候,可以搞多个页面,防止出错 index页面点击解约按钮,弹出框 进入jieyue.vue 核心代码 代码截图 jieyue.vue就是常规代码了 参考博客

    2024年02月12日
    浏览(43)
  • Flask 项目怎么配置并创建第一个小项目?附上完成第一个小案例截图

    目录 1. 为什么要学习 flask? 2. flask 是什么? 3. flask 如何使用? 要安装 Flask,可以按照以下步骤进行: 4. 使用流程 4.1. 新建项目 4.1.1. 打开 pycharm,新建项目 4.1.2. 设置目录,并添加环境 4.1.3. 找到之前创建的虚拟环境 4.1.4. 然后点击 OK 4.1.5. 注意,项目目录和环境目录不一样

    2024年01月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包