在 Lightning Web 组件中从 Apex 检索数据时显示加载指示器的最佳方式是什么?
我有这种方法:
import { LightningElement, api } from "lwc";
import shouldShowCard from "@salesforce/apex/ApexClass.shouldShowCard";
/**
* Card component that is conditionally shown based on Apex.
*/
export default class ConditionalCard extends LightningElement {
@api recordId;
@api isDone = false;
@api shouldShow = false;
connectedCallback() {
shouldShowCard({ id: this.recordId })
.then(result => {
this.shouldShow = result;
})
.finally(() => {
this.isDone = true;
});
}
}
而这个 HTML
<template>
<template if:false={isDone}>
<div>Loading...</div>
</template>
<template if:true={shouldShow>
<div>Card</div>
</template>
</template>
现在,这可行,但我使用的是 LWC ESLint 规则,当我这样做时,我收到一个错误/警告“no-api-reassignment”,因为我在我的 connectedCallback 中分配了 api 属性。 https://github.com/salesforce/eslint-plugin-lwc/blob/master/docs/rules/no-api-reassignments.md
这似乎是合理的,尽管它与 Salesforce Lightning Spinner 显示的模式非常相似。 https://developer.salesforce.com/docs/component-library/bundle/lightning-spinner/documentation
所以我只是在寻找处理这个问题的最佳方法的建议,或者我是否应该禁用 ESLint 规则。其他要考虑的事情是如何测试这些东西,API 装饰器的反应性使我的事情变得非常容易,但如果我没有使用最好的方法,我不想继续。