从 child 调用函数时组件不是 re-rendering
Component not re-rendering when calling function from child
我正在尝试通过从 child 调用 parent 函数来更改 属性。下面是 link 的例子。
我假设当函数从事件调用时 属性 更改触发 re-render,即 @click
。但是是否可以通过将函数传递给 child 并调用它来更改 属性 并触发 re-render?
class ParentComponent extends LitElement {
static get properties() {
return {
value: { type: String, reflect: true }
}
}
constructor() {
super();
this.value = 'value';
}
handleClick(value) {
this.value = value;
}
render() {
return html `
<div>
<p>My Value: ${this.value}</p>
<button @click="${() => this.handleClick('value from parent')}">Parent Button</button>
<child-component
.handleClick="${this.handleClick}"
></child-component>
</div>
`;
}
}
customElements.define('parent-component', ParentComponent);
class ChildComponent extends LitElement {
static get properties() {
return {
handleClick: { type: Function }
}
}
render() {
return html `
<button @click="${() => this.handleClick('value from child')}">Child Button</button>
`;
}
}
customElements.define('child-component', ChildComponent);
单击子按钮时 handleClick
具有 ChildComponent 的 this
上下文。如果您使用 =>
函数更新 ParentComponent 模板,则会在 ParentComonent 上设置新值。
<child-component
.handleClick="${(value) => this.handleClick(value)}"
></child-component>
我正在尝试通过从 child 调用 parent 函数来更改 属性。下面是 link 的例子。
我假设当函数从事件调用时 属性 更改触发 re-render,即 @click
。但是是否可以通过将函数传递给 child 并调用它来更改 属性 并触发 re-render?
class ParentComponent extends LitElement {
static get properties() {
return {
value: { type: String, reflect: true }
}
}
constructor() {
super();
this.value = 'value';
}
handleClick(value) {
this.value = value;
}
render() {
return html `
<div>
<p>My Value: ${this.value}</p>
<button @click="${() => this.handleClick('value from parent')}">Parent Button</button>
<child-component
.handleClick="${this.handleClick}"
></child-component>
</div>
`;
}
}
customElements.define('parent-component', ParentComponent);
class ChildComponent extends LitElement {
static get properties() {
return {
handleClick: { type: Function }
}
}
render() {
return html `
<button @click="${() => this.handleClick('value from child')}">Child Button</button>
`;
}
}
customElements.define('child-component', ChildComponent);
单击子按钮时 handleClick
具有 ChildComponent 的 this
上下文。如果您使用 =>
函数更新 ParentComponent 模板,则会在 ParentComonent 上设置新值。
<child-component
.handleClick="${(value) => this.handleClick(value)}"
></child-component>