Вы должны визуализировать из свойства, а не из того, что возвращает метод. Поэтому isGreenlisted()
не должен возвращать логическое значение, а сохранять его в определенном свойстве.
Чтобы выполнить этот метод в первый раз, выполните его в рамках firstUpdated()
метода жизненного цикла.
Всякий раз, когда свойство изменения, которые будут запускать метод render () , чтобы вы могли видеть изменения в пользовательском интерфейсе.
import { LitElement, html, css } from 'lit-element';
class DemoElement extends LitElement {
static get properties() {
return {
myVariable: { type: Boolean }
}
}
constructor() {
super();
this.myVariable = false;
}
firstUpdated() {
this._isGreenlisted();
}
render() {
return html`
<style>
paper-button {
color: blue;
}
.red {
color: red;
}
.green {
color: green;
}
</style>
<div>
${this.myVariable ? html`
<paper-button class="green" raised @click="${this._onClick}">Disable Powered By</paper-button>
`
: html`
<paper-button class="red" raised @click="${this._onClick}">Enable Powered By</paper-button>
`}
</div>
`;
}
_onClick() {
this.myVariable = !this.myVariable;
}
_isGreenlisted() {
setTimeout(() => {
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => {
if(json.userId === 1) {
this.myVariable = true;
}
})
}, 5000)
}
}
window.customElements.define('my-element', DemoElement);
Вы должны увидеть красный текст, затем он станет зеленым через 5 секунд.