import { defineComponent, onMounted, onUnmounted, reactive } from "vue"; import styles from "./index.module.less"; export default defineComponent({ name: "Keys", emits: ["click"], props: { show: { type: Boolean, default: false, }, }, setup(props, { emit }) { const data = reactive({ keys: [ { key: "C", singname: "do", type: "white" }, { key: "D", singname: "re", type: "white" }, { key: "E", singname: "mi", type: "white" }, { key: "F", singname: "fa", type: "white" }, { key: "G", singname: "so", type: "white" }, { key: "A", singname: "la", type: "white" }, { key: "B", singname: "si", type: "white" }, ], keyDown: "", }); /** 赤橙黄露青蓝紫 */ const colors = ["#F07C83", "#FF966C", "#FBB957", "#A7DCBF", "#CCCCD6", "#A5D2FF", "#B0A4F4"]; const productKey = (total = 0) => { return new Array(Math.abs(total)).fill(total > 0 ? "'" : ",").join(""); }; const keyDown = (e: KeyboardEvent) => { data.keyDown = e.key.toLocaleUpperCase(); }; const keyUp = (e: KeyboardEvent) => { data.keyDown = ""; }; onMounted(() => { document.addEventListener("keydown", keyDown); document.addEventListener("keyup", keyUp); }); onUnmounted(() => { document.removeEventListener("keydown", keyDown); document.removeEventListener("keyup", keyUp); }); return () => (