发布时间:2022-08-19 12:39
todolist之基本结构——完善todolist
开始编写代码
准备好上一讲的代码
setup(props, ctx) {
let value = ref('')
// 按回车确认
let enter = () => {
// 把输入框的内容传递给父组件
ctx.emit('add', value.value)
// 清空输入框
value.value = ''
// console.log(value.value);
}
return {
value,
enter
}
},
// 添加任务
let add = (val) => {
value.value = val
// 调用 mutation
store.commit('addTodo', {
title: value.value,
complete: false
})
console.log(val);
}
输入重复的任务时不添加到列表中
// 添加任务
let add = (val) => {
value.value = val
// 先判断有没有存在的任务 如果任务存在 不能重复添加
let flag = true
list.value.map(item => {
if (item.title === value.value) {
// 有重复的任务
flag = false
alert('任务已存在')
}
})
if (flag) {
// 调用 mutation
store.commit('addTodo', {
title: value.value,
complete: false
})
}
console.log(val);
}
setup(props, ctx) {
// 删除任务
let del = (item, index) => {
ctx.emit('del',index)
// console.log(item);
// console.log(index);
}
return {
del
}
}
setup() {
// 删除任务
let del = (val) => {
console.log(val);
}
return {
del
}
}
// 删除任务
let del = (val) => {
// 调用 mutation
store.commit('delTodo', val)
console.log(val);
}
{{item.title}}
暂无任务
setup(props) {
// 统计已完成
let isComplete = computed(() => {
// 过滤已完成
let arr = props.list.filter(item => {
return item.complete
})
return arr.length
})
return {
isComplete,
}
}
// 清除已完成
let clear = () => {
// 过滤未完成
let arr = props.list.filter(item => {
return item.complete === false
})
ctx.emit('clear', arr)
// console.log('clear');
}
return {
isComplete,
clear
}
// 清除已完成的任务
let clear = (val) => {
// 调用 mutation
store.commit('clear', val)
}
return {
add,
value,
list,
del,
clear
}
视频学习地址
课程导学,vue3.0实现todolist 教程-慕课网 (imooc.com)