vue.js 照明组件事件在视图中不起作用

h6my8fg2  于 2023-08-07  发布在  Vue.js
关注(0)|答案(1)|浏览(120)

我尝试用Lit做web组件,这样组件就可以在vanila js,react,angular和vue上使用。所以我用Lit创建了下面的代码

import { html, LitElement } from "lit";
import { customElement } from "lit/decorators.js";

@customElement("button-ripple")
export class ButtonRipple extends LitElement {
  handleClick(event: Event): void {
    console.log("handleClick from lit is running");

    let customEvent = new CustomEvent("onClickRippleButton", {
      bubbles: true,
      composed: true,
      detail: { value: "hello response from lit" },
    });
    this.dispatchEvent(customEvent);
  }

  render() {
    return html`
      <button @click=${this.handleClick}>
        <slot></slot>
        )}
      </button>
    `;
  }
}

declare global {
  interface HTMLElementTagNameMap {
    "button-ripple": ButtonRipple;
  }
}

字符串
我试着运行在vanilajs,角,用自己的方式React,它运行良好,如预期,但不是在vue
这里是我Vue代码

<script>
import 'component_from_lit_is_importedhere;
export default {
  data() {
    return {
      btnName:'Cekidot gan'
    };
  },
  methods: {

    onHanleClick(e){
      console.log("onHanleClick = ", e)
    }
  }
}
</script>

<template>
  <button-ripple @onClickRippleButton="onHandleClick($event)">{{btnName}}</button-ripple>
</template>


当我尝试把 prop “onClickRippleButton”它运行console.log,我已经在点燃元素设置
但是vue中的函数“onHandleClick”根本没有运行,并且无法接收我从Lit组件中获得的参数
在vue中有什么方法可以获取我在Lit元素中设置参数吗?

tkqqtvp1

tkqqtvp11#

事件名称中避免使用动词前缀:建议不要在自定义事件的事件名称中使用动词前缀,如“on”。大多数现代框架隐式地处理事件绑定,因此在定义事件处理程序时不需要显式地使用“on”。例如,在Angular中,您可以简单地使用(close)="handle(),而在Preact中,您可以使用onClose={this.handle}
Vue声明式事件绑定:Vue允许你监听从自定义元素调度的原生DOM事件。然而,当使用声明式事件绑定时,Vue只支持小写和kebab case事件名称。如果你想监听不同情况下的事件,你需要编写命令式代码。

onClickRippleButton重命名为clickRippleButton,类似于并尝试

handleClick(event: Event): void {
    console.log("handleClick from lit is running");

    let customEvent = new CustomEvent("clickRippleButton", {
      bubbles: true,
      composed: true,
      detail: { value: "hello response from lit" },
    });
    this.dispatchEvent(customEvent);
  }

字符串

参考文献
可复用UI组件API指南
自定义元素无处不在

相关问题