element-plus之el-dropdown组件

后台管理系统中,鼠标事件问题,一般列表或者树形右侧的更多按钮功能,可以使用el-dropdown下拉菜单组件,icon一直显示没有那么美观,这是的需求是实现hover显示隐藏。

这下问题来了鼠标放在下拉框上,icon会隐藏,要的是鼠标离开列表才隐藏。我这里使用visible-change事件配合鼠标mouseleave事件。

// template

<div class="dropdown" v-if="current?.id === item.id">

    <el-dropdown @visible-change="visibleChangeHandle">

      <el-icon class="more">

        <MoreFilled />

      </el-icon>

      <template #dropdown>

        <el-dropdown-menu>

          <el-dropdown-item @click="onDelete(item)"

            >删除</el-dropdown-item

          >

        </el-dropdown-menu>

      </template>

    </el-dropdown>

</div>

 

@mouseenter="rowMouseEnter(item)"

@mouseleave="rowMouseEnter({ id: -1 })"

// js核心逻辑,下拉框隐藏时会触发visible-change事件,控制icon显示隐藏的开关,鼠标移除会触发隐藏回调函数。

const isHover = ref(false)

const visibleChangeHandle = (evt) => {

  if (!evt) {

    current.value = { id: -1 }

  }

  isHover.value = evt

}  

const rowMouseEnter = (item) => {

  if (isHover.value) return

  nextTick(() => {

    current.value = item

  })

}

 

点此发表评论
暂无评论