欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > vue2基础系列教程之todo的实现及面试高频问题

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

2025/2/23 7:10:02 来源:https://blog.csdn.net/qq_27702739/article/details/142258235  浏览:    关键词: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><inputv-model="newTodoText"id="new-todo"placeholder="E.g. Feed the cat"><button>Add</button></form><ul v-if="todos.length"><liis="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) returnthis.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: {}
})

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词