//用了vite后,在组件标签就可以直接用局部注册的标签名了。像没用这个vite时,如果在body里面大写组件标签会有报错的情况,还有像在v-model写在组件时,在对应的子组件input里面要写:value="modelValue",但props里面传的是model-value,还有像在写父传子的组件中属性名都要小写,如果大写,会将数据传undefined,就是没有接收到,给写代码带来了不少麻烦。总的来说。使用vite后方便写代码了很多
<script>
?? ?import TodoHeader from './components/TodoHeader.vue'
?? ?import TodoText from './components/TodoText.vue'
?? ?import TodoCart from './components/TodoCart.vue'
?? ?import TodoFooter from './components/TodoFooter.vue'
?? ?var itemid=1
?? ?export default {
?? ??? ?name: 'app',
?? ??? ?data() {
?? ??? ??? ?return {
?? ??? ??? ??? ?arr: [],
?? ??? ??? ??? ?type: 'all',
?? ??? ??? ??? ?currentarr: []
?? ??? ??? ?}
?? ??? ?},
?? ??? ?components: {
?? ??? ??? ?TodoHeader,
?? ??? ??? ?TodoText,
?? ??? ??? ?TodoCart,
?? ??? ??? ?TodoFooter
?? ??? ?},
?? ??? ?computed: {
?? ??? ??? ?computetode() {
?? ??? ??? ??? ?return this.arr.filter(item => item.complate == true)
?? ??? ??? ?},
?? ??? ??? ?uncomputetode() {
?? ??? ??? ??? ?return this.arr.filter(item => item.complate == false)
?? ??? ??? ?},
?? ??? ?},
?? ??? ?methods: {
?? ??? ??? ?addcartin(title) {
?? ??? ??? ??? ?this.arr.push({
?? ??? ??? ??? ??? ?id: itemid++,
?? ??? ??? ??? ??? ?complate: false,
?? ??? ??? ??? ??? ?title
?? ??? ??? ??? ?})
?? ??? ??? ?},
?? ??? ??? ?removeall(data) {
?? ??? ??? ??? ?this.arr = data
?? ??? ??? ?},
?? ??? ??? ?remove(id) {
?? ??? ??? ??? ?this.arr = this.arr.filter(item => item.id != id)
?? ??? ??? ?},
?? ??? ??? ?tab(data) {
?? ??? ??? ??? ?this.type = data
?? ??? ??? ?}
?? ??? ?},
?? ??? ?watch: {
?? ??? ??? ?uncomputetode() {
?? ??? ??? ??? ?if (this.type == 'every') {
?? ??? ??? ??? ??? ?this.currentarr = this.uncomputetode
?? ??? ??? ??? ?} else if (this.type == 'some') {
?? ??? ??? ??? ??? ?this.currentarr = this.computetode
?? ??? ??? ??? ?} else {
?? ??? ??? ??? ??? ?this.currentarr = this.arr
?? ??? ??? ??? ?}
?? ??? ??? ?},
?? ??? ??? ?type: {
?? ??? ??? ??? ?handler(newtype) {
?? ??? ??? ??? ??? ?console.log(newtype)
?? ??? ??? ??? ??? ?switch (newtype) {
?? ??? ??? ??? ??? ??? ?case 'all':
?? ??? ??? ??? ??? ??? ??? ?this.currentarr = this.arr
?? ??? ??? ??? ??? ??? ??? ?break
?? ??? ??? ??? ??? ??? ?case 'some':
?? ??? ??? ??? ??? ??? ??? ?this.currentarr = this.computetode
?? ??? ??? ??? ??? ??? ??? ?break
?? ??? ??? ??? ??? ??? ?case 'every':
?? ??? ??? ??? ??? ??? ??? ?this.currentarr = this.uncomputetode
?? ??? ??? ??? ??? ??? ??? ?break
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?},
?? ??? ??? ??? ?immediate: true,
?? ??? ??? ?},
?? ??? ?}
?? ?}
</script>
<template>
?? ?<div class="header">
?? ??? ?<TodoHeader @add="addcartin"></TodoHeader>
?? ??? ?<TodoText :type="type" @blue="tab" :computetode="computetode" :Uncomputetode="uncomputetode" :arr="arr">
?? ??? ?</TodoText>
?? ??? ?<todo-cart :list="currentarr" @remove="remove"></todo-cart>
?? ??? ?<todo-footer @clear="removeall"></todo-footer>
?? ?</div>
</template>
<style>
?? ?* {
?? ??? ?padding: 0;
?? ??? ?margin: 0;
?? ?}
?? ?ul,
?? ?ol {
?? ??? ?list-style: none;
?? ?}
?? ?.header {
?? ??? ?width: 400px;
?? ??? ?margin: 0px auto;
?? ??? ?margin-top: 50px;
?? ??? ?box-shadow: 1px 1px 5px 5px;
?? ?}
?? ?.input {
?? ??? ?padding: 10px;
?? ??? ?height: 30px;
?? ??? ?display: flex;
?? ?}
?? ?.input input {
?? ??? ?padding-left: 10px;
?? ??? ?flex: 1;
?? ?}
?? ?.input button {
?? ??? ?width: 60px;
?? ??? ?height: 30px;
?? ?}
?? ?.text {
?? ??? ?padding: 10px;
?? ??? ?display: flex;
?? ?}
?? ?.text .list {
?? ??? ?flex: 1;
?? ??? ?text-align: center;
?? ??? ?cursor: pointer;
?? ?}
?? ?/* ?? ?.text div:nth-child(1){
?? ??? ??? ??? ?background-color: black;
?? ??? ??? ??? ?color: white;
?? ??? ??? ??? ?
?? ??? ??? ?} */
?? ?.text .active {
?? ??? ?background-color: black;
?? ??? ?color: white;
?? ?}
?? ?.cart {
?? ??? ?padding: 10px;
?? ?}
?? ?.cart li {
?? ??? ?height: 20px;
?? ??? ?display: flex;
?? ??? ?margin-bottom: 10px;
?? ?}
?? ?.cart li div {
?? ??? ?flex: 1;
?? ??? ?padding-left: 10px;
?? ?}
?? ?.cart li input {
?? ??? ?height: 20px;
?? ??? ?width: 20px;
?? ?}
?? ?.clear {
?? ??? ?padding: 10px;
?? ??? ?display: flex;
?? ?}
?? ?.clear div {
?? ??? ?flex: 1;
?? ?}
</style>