有没有更好的方法使用 LitElement 将函数传递给道具?
Is there any better way to pass function to props with LitElement?
我正在使用 polymer LitElement,我试图将一个函数传递给 props 但没有用,这是我发现的工作方式,但它太糟糕了......有更好的建议吗?
import { LitElement, html, customElement, property } from 'lit-element';
@customElement('my-element')
export class MyElement extends LitElement {
onButtonClick = function name (){
console.log("Clicked!!")
}
render() {
return html`
<c-button text="Button Name" onClick="${this.onButtonClick}" />
`;
}
}
@customElement("c-button")
export class CButton extends LitElement{
@property() text;
@property() onClick;
handleClick(){
let fct = eval(`( ${this.onClick} )` )
fct();
}
render(){
return html`
<button @click="${this.handleClick}" > ${this.text} </button>
`
}
}
默认 lit-html data bindings 设置一个属性,这意味着它必须将值转换为字符串。
而不是 onClick="${this.onButtonClick}"
前缀 .
像这样 .onClick="${this.onButtonClick}"
。这将在 JavaScript 中设置一个 属性,并且该方法将通过引用传递。
@abraham 的回答适用于一般情况:您可以使用 .
语法设置属性,包括函数。
但是,如果您专门处理事件,那么我会使用事件绑定(@
语法)并确保您感兴趣的事件是冒泡的和组合的(如 click
is) 这样它就会传播出子组件,或者由子组件重新调度。事件是一个很好的模型,我会将它们用于类似事件的事情。
我正在使用 polymer LitElement,我试图将一个函数传递给 props 但没有用,这是我发现的工作方式,但它太糟糕了......有更好的建议吗?
import { LitElement, html, customElement, property } from 'lit-element';
@customElement('my-element')
export class MyElement extends LitElement {
onButtonClick = function name (){
console.log("Clicked!!")
}
render() {
return html`
<c-button text="Button Name" onClick="${this.onButtonClick}" />
`;
}
}
@customElement("c-button")
export class CButton extends LitElement{
@property() text;
@property() onClick;
handleClick(){
let fct = eval(`( ${this.onClick} )` )
fct();
}
render(){
return html`
<button @click="${this.handleClick}" > ${this.text} </button>
`
}
}
默认 lit-html data bindings 设置一个属性,这意味着它必须将值转换为字符串。
而不是 onClick="${this.onButtonClick}"
前缀 .
像这样 .onClick="${this.onButtonClick}"
。这将在 JavaScript 中设置一个 属性,并且该方法将通过引用传递。
@abraham 的回答适用于一般情况:您可以使用 .
语法设置属性,包括函数。
但是,如果您专门处理事件,那么我会使用事件绑定(@
语法)并确保您感兴趣的事件是冒泡的和组合的(如 click
is) 这样它就会传播出子组件,或者由子组件重新调度。事件是一个很好的模型,我会将它们用于类似事件的事情。