0

所以我想在我的发光组件中有一个加载指示器,直到它加载。这是 HTML:

            <login-element class=" flex justify-center items-center">
                <div class="animate-spin rounded-full h-11 w-11 border-t-2 border-b-2 border-purple-500"></div>
            </login-element>

这是打字稿代码:

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

@customElement('login-element')
export class LoginElement extends LitElement {

    override createRenderRoot(){ return this; }

    override render() {
        return html`<a href="/auth0" class="inline-block text-sm px-4 py-2 leading-none border rounded text-white border-white hover:border-transparent hover:text-teal-500 hover:bg-white mt-4 lg:mt-0">Sign In</a>`
    }
}

目前,它附加了登录按钮。我希望它取代加载指示器。有推荐的方法吗?

4

1 回答 1

0

您可以传递 Spinner 的 HTML 和信息,是否通过自定义元素加载某些内容。

<login-element loading><b>Spinner-Element</b></login-element>

您将通过的 spinner-HTML 本身

unsafeHTML(this.innerHTML)

在您的自定义元素中。

然后你可以使用你的微调器并决定在 render() 函数中使用条件显示它。

  @property({ type: Boolean })
  loading = false;
  
  render() {
    return html`     
      ${this.loading ? html`
      Showing spinner: ${unsafeHTML(this.innerHTML)}`: 'loaded!'}
    `;
  }

在这个工作示例中,如果您删除“正在加载”属性,您将看到“已加载!” 消息,否则您将看到作为微调标记传递给元素的内容: https ://stackblitz.com/edit/lit-element-typescript-starter-pl3bij?file=my-element.ts

于 2021-10-28T10:31:27.217 回答