• Accueil / Salesforce / Composant Web Lightning…
, Composant Web Lightning compatible avec la page App Builder<span class="wtr-time-wrap after-title"><span class="wtr-time-number">4</span> minutes de lecture</span>

Composant Web Lightning compatible avec la page App Builder4 minutes de lecture


, Composant Web Lightning compatible avec la page App Builder<span class="wtr-time-wrap after-title"><span class="wtr-time-number">4</span> minutes de lecture</span>

introduction

Cette semaine, j’ai expérimenté des composants Web Lightning découplés dans
pages de création d’applications, maintenant que nous avons le service de messagerie Lightning pour autoriser
de communiquer entre eux sans être imbriqués.

Un certain nombre de composants sont destinés à être utilisés dans les pages d’accueil et d’applications d’enregistrement,
ce qui peut présenter des défis, dans mon cas autour de l’initialisation. Certains de mes
les composants doivent s’initialiser en effectuant un appel au serveur, mais s’ils
font partie d’une page d’accueil d’enregistrement alors je veux attendre que l’ID d’enregistrement ait
été fourni. Idéalement, je veux que mon composant sache de quel type de page il s’agit
actuellement affiché dans et prenez les mesures appropriées.

Inspecter l’URL

Une façon d’y parvenir est d’inspecter l’URL de la page actuelle, mais c’est
une approche assez fragile comme si Salesforce modifiait le schéma d’URL,
a de bonnes chances de se briser. Je pourrais utiliser le
navigation mixin
pour générer des URL à partir de références de pages et comparer celles-ci avec l’URL actuelle,
mais cela semble un peu maladroit et ajoute un délai pendant que j’attends les promesses
résoudre.

Propriétés de targetConfig

La solution que j’ai trouvée avec le moins d’impact était d’utiliser les strophes targetConfig dans
le composant
Fichier de configuration js-meta.xml. À partir de la documentation, ceux-ci vous permettent de:

Configurer le composant pour différents types de page et définir le composant
Propriétés. Par exemple, un composant peut avoir des propriétés différentes sur un
enregistrer la page d’accueil que sur la page d’accueil de Salesforce ou sur une page d’application.

C’est ce paragraphe qui m’a donné l’indice – différentes propriétés selon
sur le type de page!

Vous pouvez définir la même propriété sur plusieurs types de page, mais définir
des valeurs par défaut différentes selon le type de page spécifique. Dans mon cas, je
définir une propriété pageType et utiliser par défaut le type de page que je suis
ciblage:


    
        
    
    
        
    
    
        
    

donc pour une page d’enregistrement, la propriété pageType est définie comme «enregistrement» et ainsi de suite.

Dans mon composant, j’expose le type de page en tant que propriété publique avec getter et
méthodes setter (vous n’avez besoin du décorateur @api que sur l’une des méthodes, et
convention semble actuellement être le getter):

@api get pageType() {
    return this._pageType;
}

set pageType(value) {
    this._pageType=value;
    this.details+='I am in a(n) ' + this._pageType + ' pagen';
    switch (this._pageType) {
        case 'record' :
             this.details+='Initialisation will happen when the record id  is set (which may already have happened)n';
             break;
            ;;
        case 'app' :
        case 'home' :
            this.details+='Initialisingn';
            break;
    }                
 }

et similaire pour l’identifiant d’enregistrement, afin que je puisse prendre des mesures lorsque c’est
ensemble:

@api get recordId() {
    return this._recordId;
}

set recordId(value) {
    this._recordId=value;
    this.details+='I have received record id ' + this._recordId + ' - initialisingn';
}

puis je peux ajouter le composant à la page d’enregistrement des comptes:

, Composant Web Lightning compatible avec la page App Builder<span class="wtr-time-wrap after-title"><span class="wtr-time-number">4</span> minutes de lecture</span>

une page d’application personnalisée:

, Composant Web Lightning compatible avec la page App Builder<span class="wtr-time-wrap after-title"><span class="wtr-time-number">4</span> minutes de lecture</span>

et la page d’accueil de l’application standard de vente:

, Composant Web Lightning compatible avec la page App Builder<span class="wtr-time-wrap after-title"><span class="wtr-time-number">4</span> minutes de lecture</span>

et dans chaque cas le composant sait quel type de page il a été ajouté
à.

Bien sûr, ce n’est pas infaillible – mon collègue maléfique pourrait modifier les pages et
changer les valeurs dans le générateur d’application, menant à toutes sortes d’hilarité comme mon
les composants attendent désespérément l’ID d’enregistrement qui ne vient jamais. Je pourrais probablement
étendre mon
Documenteur d’organisation
pour traiter les métadonnées flexipage et vérifier que les valeurs n’ont pas été modifiées,
mais en réalité c’est un sabotage à impact assez faible et probablement mieux que le mauvais collègue se concentre sur cela plutôt que sur quelque chose de plus dommageable.

Montrez-moi le code!

Vous pouvez trouver le code sur le
Repo Github.

Articles Similaires





Source de l’article traduit automatiquement en Français

Besoin d'aide ?
Voulez-vous utiliser Pardot à sa capacité maximale et avoir
+ DE LEADS QUALIFIÉS

Notre analyse de votre Pardot offerte dès aujourd'hui
Merci, vous pouvez compléter notre questionnaire
Nous allons revenir vers vous rapidement !

Fermer