关于javascript:vue3typeScript-多选标签每周一个小组件

6次阅读

共计 976 个字符,预计需要花费 3 分钟才能阅读完成。

每周一个小组件

前言

实现性能:单击标签可选中或勾销,标签可多选。
每周分享一个 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 继续更新中 …

正文完
 0