效果图
实现每一项的独特命名来实现删除添加选取的精准操作需要在终端安装nanoid 指令为npm i nanoid并在header页中配置
可以根据功能来拆分组件共可以拆分组件分别为MyHeader MyItem MyFooter添加My的作用主要是用来防止标签与html5中新增标签起冲突,而MyItem中包含MyList组件
组件创建完成后需要在App.vue中注册
App的所有代码
<template>
<div id="app">
<div class="todo-container">
<div class="todo-wrap">
<MyHeader :addTodo="addTodo" />
<Mylist
:todos="todos"
:checkTodo="checkTodo"
:deleteTodo="deleteTodo"
/>
<MyFooter
:todos="todos"
:checkAllTodo="checkAllTodo"
:clearAllTodo="clearAllTodo"
/>
</div>
</div>
</div>
</template>
<script>
import MyHeader from "./components/MyHeader.vue";
import Mylist from "./components/Mylist.vue";
import MyFooter from "./components/MyFooter.vue";
export default {
name: "App",
components: {
MyFooter,
MyHeader,
Mylist,
},
data() {
return {
todos: JSON.parse(localStorage.getItem("todos")) || [],
};
},
methods: {
addTodo(todoObj) {
this.todos.unshift(todoObj);
},
checkTodo(id) {
this.todos.forEach