每周一个小组件

前言

实现性能:单击标签可选中或勾销,标签可多选。
每周分享一个vue3+typeScript的小组件,我只想分享下本人的实现思路,楼主是个菜鸡前端,记录下实现过程,说不定对你有帮忙。

成果展现

预览地址

github地址

开发过程

其实,只有思路对了,实现这个标签多选性能非常简单,上面看代码构造

html局部

   <div class="menu-box">        <!-- 循环每个标签 -->        <duv class="menu-item" v-for="(vo,inx) in items" @click="itemFn(inx)" :class="vo.isTrue?'acitve':''" :key="inx">            {{vo.name}}        </duv>    </div>

ts局部

<script lang="ts">import {    defineComponent,    reactive,    toRefs} from 'vue'export default defineComponent({    setup() {        const data = reactive({            items: [{                name: '举荐',                isTrue: false            }, {                name: '图片',                isTrue: false            }, {                name: '视频',                isTrue: false            }, {                name: '段子',                isTrue: false            }, ],            itemFn: (inx: number) => {                data.items[inx].isTrue = !data.items[inx].isTrue            }        })        const data_ = toRefs(data)        return {            ...data_        }    }})</script>

css局部

    .menu-box {        width: 400px;        height: 100px;        background: #f5f5f5;        display: flex;        flex-wrap: wrap;        justify-content: space-between;        padding: 0 20px;        padding-top: 20px;        .menu-item {            padding: 6px 15px;            height: 40px;            border: 1px solid #ddd;            border-radius: 20px;            cursor: pointer;        }        .acitve {            border: 1px solid #409EFF;            color: #409EFF;        }    }

vue3继续更新中...