vue.js - 鼠标悬停功能不会切换
问题描述
我正在尝试更改悬停时的悬停值,但是每当我将鼠标悬停在 flex 元素上时它似乎都不起作用,我做错了什么?
html
template(#default="{ toggle, toggled, hover }")
.flex(@click="toggle" @mouseover="hover = !hover" )
box-icon(type="solid" name="chevron-down" v-if="hover")
零件
<template lang="pug">
slot(:toggled="toggled" :toggle="toggle" :hover="hover")
</template>
<script>
import { ref } from 'vue'
export default {
setup() {
const toggled = ref(false)
const hover = ref(false)
function toggle() {
toggled.value = !toggled.value
}
return { toggled, toggle, hover }
}
}
</script>
解决方案
@mouseover 不是 vuejs 中的事件。
您将不得不使用@mouseenter和@mouseleave。
此外,您似乎无法编辑 ref 值,您必须在模板中创建一个函数来更改该值。这是我现在无法解释的事情。尽管如此,我还是让它发挥了作用。
这是一个工作示例:
// Test.vue component
<script setup>
const toggled = ref(false)
const hovered = ref(false)
const hover = (value) => hovered.value = value
const toggle = () => toggled.value = ! toggled.value
</script>
<template>
<slot :toggled="toggled" :toggle="toggle" :hovered="hovered" :hover="hover" />
</template>
<Test>
<template #default="{toggle, toggled, hover, hovered}">
<button @click="toggle" @mouseenter="hover(true)" @mouseleave="hover(false)">
<p>Toggled : {{ toggled }}</p>
<p>Hovered : {{ hovered }}</p>
</button>
</template>
</Test>
推荐阅读
- r - R:读取无符号字符的二进制文件
- google-cloud-platform - How to calculate the cost (bill) of a Google Cloud Genomics Pipeline
- cocoa - NSImageView(以编程方式添加)不显示图像,但显示颜色
- c# - 如何在C#中计算远离一个点但朝向另一个点的坐标X米
- python - 在多个熊猫列中按元素合并 np.array
- node.js - 尝试使用 mssql 模块在 NodeJs 中执行长查询时出现未知错误
- java - java.time.Instant (1.8) 是线程安全的吗?
- service - Google Play 服务无法运行,因为 Firebase 创建了另一个 oath 客户端 ID
- java - 重置 If 语句 (?)
- wordpress-gutenberg - Wordpress Gutenberg withSelect get list of post types