当前位置: 首页 > article >正文

vue2基础系列教程之todo的实现及面试高频问题

关键知识点

  • v2里面,当在同一个元素或组件上同时使用v-for和v-if,v-for的权限高于v-if

  • v-show和v-if的区别主要有

    • v-if是惰性的,v-show是及时的
    • v-if值为false时,不会生成dom,v-show不管值是true或false,都会生成dom,修改的是dom的display属性
    • v-if用在组件上,会触发组件的生命周期的重新渲染,v-show不会
    • v-if可以用在template上,v-show不行,只能用在元素或组件上
  • v-for迭代的数据可以是array,也可以是object,如果是object,则内部使用的Object.keys进行的迭代。

  • 在迭代ul中元素时,我们要注意一点,由于ul内部只能显示li标签,所以我们在封装子组件时要注意必须如下处理,使用is='组件名字',避免不同的浏览器渲染不同,导致出现bug
    -在这里插入图片描述

实现效果

请添加图片描述

<div id="app">
    ...
    <todo-form :todos="todos"/>
</div>

form表单的封装

const form = `<div id="todo-list-example">
   <form v-on:submit.prevent="addNewTodo">
     <label for="new-todo">Add a todo</label>
     <input
       v-model="newTodoText"
       id="new-todo"
       placeholder="E.g. Feed the cat"
     >
     <button>Add</button>
   </form>
   <ul v-if="todos.length">
     <li
       is="todo-item"
       v-for="(todo, index) in todos"
       v-bind:key="todo.id"
       v-bind:title="todo.title"
       v-on:remove="todos.splice(index, 1)"
     ></li>
   </ul>
   <p v-else>No todos left!</p>
</div>`
Vue.component('todo-form', {
      template: form,   //就是html字符串,类似于react里面jsx的写法
      data(){
        return {
          newTodoText:'',
          id:0
        }
      },
      props:[
        'todos'
      ],
      methods: {
        addNewTodo(){
           if(!this.newTodoText) return
           this.todos.push({id:this.id++,title:this.newTodoText})
           this.newTodoText=''
        }
      }
})

item封装实现

Vue.component('todo-item', {
    props: ['title'],
     template: `<li>
       {{ title }} <button v-on:click="$emit('remove')">Remove</button>`
})

根实例的实现

const vm = new Vue({
   el: '#app',
   data: {
     object: {
       title: 'How to do lists in Vue',
       author: 'Jane Doe',
       publishedAt: '2016-04-10'
     },
     users:[{id:'1',name:"张三"},{id:'2',name:"李四"}],
     todos:[]
   },
   created() {
   },
   methods: {}
})

http://www.kler.cn/news/307499.html

相关文章:

  • 切线空间:unity中shader切线空间,切线矩阵,TBN矩阵 ,法线贴图深度剖析
  • LSS如何做Voxel Pooling
  • springBoot整合easyexcel实现导入、导出功能
  • 刷题DAY38
  • python 使用seleniumwire获取响应数据以及请求参数
  • 力扣100题——贪心算法
  • 【HarmonyOS NEXT】实现网络图片保存到手机相册
  • node.js+Koa框架+MySQL实现注册登录
  • Golang | Leetcode Golang题解之第412题Fizz Buzz
  • [创业之路-147] :国际标准化产品的研发与非标自动化产品研发的比较?
  • Linux进阶 修改文件权限
  • 2024年9月HarmonyOS鸿蒙应用开发者高级认证全新题库(覆盖99%考题)
  • 微软Copilot将集成到新加坡的法律科技平台中
  • electron-updater实现electron全量版本更新
  • 营收同比大增215%,联想x86服务器夯实市场前三
  • Docker和K8S
  • SOCKS5代理验证参数详解:如何确保代理的可靠性
  • LabVIEW中AVI帧转图像数据
  • Python:抓取 Bilibili(B站)评论、弹幕、字幕等
  • Android中的四大组件
  • 使用 Java 初步搭建简单Spring 项目框架:
  • C++设计模式——Prototype Pattern原型模式
  • 本科生如何学习机器学习
  • 如何通过编程工具提升工作效率
  • Vue3项目开发——新闻发布管理系统(七)
  • vue2——使用Element-UI实现可搜索的树形结构
  • JSON处理工具类
  • CUDA及GPU学习资源汇总
  • 强化学习Reinforcement Learning|Q-Learning|SARSA|DQN以及改进算法
  • 无人机PX4飞控ROS应用层开发:MAVROS 功能包介绍与飞控消息汇总(一)