Вам не нужно @api
, если эти параметры являются внутренним состоянием, если вы не планируете устанавливать их из родительского компонента или предоставлять их системному администратору, чтобы он мог, например, настроить компонент в Lightning App Builder. У вас должно быть все в порядке с @track
- или вообще без комментариев. Для простых переменных вам не нужно @track
начиная с Spring'20 ( заметки о выпуске ); он может вам все еще понадобиться, если ваша переменная - массив или объект.
Это должно заставить ESLint замолчать.
Я делаю это немного по-другому, личные предпочтения возвращаются из Visualforce status
и rendered
days Я думаю.
<template>
<template if:true={loaded}>
<p>Content goes here</p>
</template>
<template if:false={loaded}>
<lightning-spinner variant="brand" alternative-text="Loading"></lightning-spinner>
</template>
</template>
import { LightningElement, api, wire, track } from 'lwc';
import someMethod from '@salesforce/apex/SomeClass.someMethod';
export default class StackExample extends LightningElement {
@api recordId;
@track data;
loaded = false;
@wire(someMethod, { i: '$recordId' }) wiredResponse({ error, data }) {
if (data) {
this.data = data;
// some post-processing here
} else if (error) {
// show toast?
}
if(data || error){
this.loaded = true;
}
}
}
Помните, что некоторые теги, такие как <lightning-datatable>
, имеют внутренний счетчик. Поиск документации для isLoading
. Так что вам может даже не понадобиться if
s в html.