情景:一个按钮列表,里面包含多个相似按钮,需要定义的属性有按钮名称、按钮值和点击切换样式的方法。

结果示意:

 代码:

<button v-for="(item,index) in btnList" :key="index" @click="changeStatus(index)" :title="item.name" class="{active:item.isShow}">{{item.name}}</button>
 const btnList = ref(
        [
            {
                name: "脸型设置",
                isShow: false,
            }, {
                name: "发型设置",
                isShow: false,
            }, {
                name: "眼睛设置",
                isShow: false,
            }
        ]
    )
  const changeStatus = (i) => {
        if (btnList.value[i].isShow === false)
            for (var item in btnList.value) {
                // console.log(item);
                if (item !== i) {
                    btnList.value[item].isShow = false;
                }
            }
        btnList.value[i].isShow = !btnList.value[i].isShow;
    }

注意点:Ref 会使它的值具有深层响应性。这意味着即使改变嵌套对象或数组时,变化也会被检测到(vue官网原句),也就是新建ref数组就可实现数组内对象属性的响应式。如果不加,则即使点击按钮,也无法激活点击样式。

posted on 2024-05-17 12:17  Ahaya  阅读(10)  评论(0编辑  收藏  举报