Connecter votre composant WebPart côté client à SharePoint (Hello World 2e partie)

Connectez votre composant WebPart à SharePoint pour accéder aux fonctionnalités et aux données de SharePoint et offrir une expérience plus homogène aux utilisateurs finals.

Vous pouvez également suivre ces étapes en regardant cette vidéo sur la chaîne YouTube Microsoft 365 Platform Community (PnP) :

Remarque

Cet article poursuit le développement du composant WebPart Hello World créé dans l’article précédent, Créer votre premier composant WebPart.

Exécution de la commande gulp serve

Assurez-vous que la commande gulp serve est en cours d’exécution. Si ce n’est pas le cas, accédez au répertoire du projet helloworld-webpart et exécutez-la à l’aide des commandes suivantes.

cd helloworld-webpart
gulp serve

Accéder au contexte de la page

Le workbench hébergé dans SharePoint permet d’accéder au contexte de page, qui expose les propriétés clés suivantes, telles que :

  • Le titre du site web
  • L’URL absolue du site web
  • L’URL relative au serveur du site web
  • Le nom de connexion de l’utilisateur

Pour obtenir l’accès au contexte de la page

Pour accéder aux informations contextuelles dans votre composant WebPart, vous allez utiliser l’objet suivant dans votre code :

this.context.pageContext
  1. Dans Visual Studio Code, recherchez &.\src\webparts\helloWorld\HelloWorldWebPart.ts.

  2. Dans la render() méthode , remplacez le bloc de innerHTML code par ce qui suit :

    this.domElement.innerHTML = `
    <section class="${styles.helloWorld} ${!!this.context.sdks.microsoftTeams ? styles.teams : ''}">
      <div class="${styles.welcome}">
        <img alt="" src="${this._isDarkTheme ? require('./assets/welcome-dark.png') : require('./assets/welcome-light.png')}" class="${styles.welcomeImage}" />
        <h2>Well done, ${escape(this.context.pageContext.user.displayName)}!</h2>
        <div>${this._environmentMessage}</div>
      </div>
      <div>
        <h3>Welcome to SharePoint Framework!</h3>
        <div>Web part description: <strong>${escape(this.properties.description)}</strong></div>
        <div>Web part test: <strong>${escape(this.properties.test)}</strong></div>
        <div>Loading from: <strong>${escape(this.context.pageContext.web.title)}</strong></div>
      </div>
    </section>`;
    
  3. Vous pouvez remarquer que ${ } est utilisé pour afficher la valeur de la variable dans le bloc de code HTML. Un élément HTML div supplémentaire est utilisé pour afficher this.context.pageContext.web.title.

  4. Enregistrez le fichier. La commande gulp serve exécutée dans votre console détecte cette opération d’enregistrement et :

    • génère et regroupe automatiquement le code mis à jour

    Remarque

    Placez la fenêtre de la console et celle de Visual Studio Code côte à côte pour observer Gulp se compiler automatiquement à mesure que vous enregistrez les modifications dans Visual Studio Code.

  5. Accédez au workbench hébergé de votre site SharePoint hébergé. L’URL complète est https://your-sharepoint-site-url/_layouts/workbench.aspx. Actualisez le workbench hébergé pour récupérer les modifications de l’offre groupée de code prédéfinie.

    Maintenant que le contexte de la page est disponible pour le composant WebPart, le titre de votre site SharePoint doit s’afficher dans le composant WebPart.

    Contexte de la page SharePoint dans un site SharePoint

Définition d’un modèle de liste

Vous avez besoin d’un modèle de liste pour commencer à travailler avec les données de liste SharePoint. Pour récupérer les listes, vous avez besoin de deux modèles.

  1. Dans Visual Studio Code, recherchez et ouvrez .\src\webparts\helloWorld\HelloWorldWebPart.ts.

  2. Définissez les interfaces suivantes immédiatement avant la déclaration de classe HelloWorldWebPart :

    export interface ISPLists {
      value: ISPList[];
    }
    
    export interface ISPList {
      Title: string;
      Id: string;
    }
    

    L’interface ISPList conserve les informations de liste SharePoint auxquelles vous vous connectez.

Récupération de listes à partir du site SharePoint

Vous devez maintenant récupérer des listes à partir du site actuel. Vous allez utiliser l’API REST SharePoint pour extraire ces listes, qui se trouvent à l’emplacement https://yourtenantprefix.sharepoint.com/_api/web/lists.

SharePoint Framework inclut une classe d’assistance spHttpClient pour exécuter des requêtes API REST par rapport à SharePoint. Il ajoute des en-têtes par défaut, gère le résumé requis pour les écritures et recueille les données télémétriques qui permettent au service de surveiller les performances d’une application.

Pour utiliser cette classe d’assistance, importez-les à partir du @microsoft/sp-http module

  1. Faites défiler vers le haut du fichier HelloWorldWebPart.ts.

  2. Recherchez la ligne import * as strings from 'HelloWorldWebPartStrings'; et ajoutez le code suivant immédiatement après :

    import {
      SPHttpClient,
      SPHttpClientResponse
    } from '@microsoft/sp-http';
    
  3. Ajoutez la méthode suivante pour récupérer des listes à partir de SharePoint à l’intérieur de la classe HelloWorldWebPart.

    private _getListData(): Promise<ISPLists> {
      return this.context.spHttpClient.get(`${this.context.pageContext.web.absoluteUrl}/_api/web/lists?$filter=Hidden eq false`, SPHttpClient.configurations.v1)
        .then((response: SPHttpClientResponse) => {
          return response.json();
        })
        .catch(() => {});
    }
    

    La méthode utilise la classe d’assistance spHttpClient et émet une requête HTTP GET. Il utilise l’interface ISPLists et applique également un filtre pour ne pas récupérer les listes masquées.

  4. Enregistrez le fichier.

  5. Revenez à la fenêtre de la console qui exécute gulp serve et vérifiez s’il existe des erreurs. S’il existe des erreurs, Gulp les signale dans la console et vous devez les corriger pour pouvoir continuer.

Ajout de nouveaux styles

SharePoint Framework utilise Sass comme préprocesseur CSS et utilise plus spécifiquement la syntaxe SCSS, qui est entièrement conforme à la syntaxe CSS normale. Sass étend le langage CSS et vous permet d’utiliser des fonctionnalités telles que les variables, les règles imbriquées et les instructions import incorporées pour organiser et créer des feuilles de style efficaces pour vos composants WebPart. Le SharePoint Framework est déjà fourni avec un compilateur SCSS qui convertit vos fichiers Sass en fichiers CSS normaux et fournit également une version typée à utiliser pendant le développement.

Pour ajouter de nouveaux styles

  1. Ouvrir HelloWorldWebPart.module.scss. Il s’agit du fichier SCSS dans lequel vous définissez vos styles.

    Par défaut, les styles s’appliquent uniquement à votre composant WebPart. Vous pouvez constater que les styles sont définis sous .helloWorld.

  2. Ajoutez les styles suivants après le style .links:

    .list {
      color: #333333;
      font-family: 'Segoe UI Regular WestEuropean', 'Segoe UI', Tahoma, Arial, sans-serif;
      font-size: 14px;
      font-weight: normal;
      box-sizing: border-box;
      margin: 10;
      padding: 10;
      line-height: 50px;
      list-style-type: none;
      box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1);
    }
    
    .listItem {
      color: #333333;
      vertical-align: center;
      font-family: 'Segoe UI Regular WestEuropean', 'Segoe UI', Tahoma, Arial, sans-serif;
      font-size: 14px;
      font-weight: normal;
      box-sizing: border-box;
      margin: 0;
      padding: 0;
      box-shadow: none;
      *zoom: 1;
      padding: 9px 28px 3px;
      position: relative;
    }
    
  3. Enregistrez le fichier.

    Gulp recompose le code de la console dès que vous enregistrez le fichier. Cela génère les typages correspondants dans le fichier HelloWorldWebPart.module.scss.ts. Une fois ces styles compilés dans TypeScript, vous pouvez les importer et les référencer dans le code de votre composant WebPart.

    Conseil

    Ce fichier est généré dynamiquement lorsque le projet est généré. Il est masqué dans la vue Explorateur de VS Code à l’aide du fichier .vscode/settings.json.

    Vous pouvez voir l’élément suivant dans la méthode render() du composant WebPart :

    <div class="${styles.welcome}">
    

Rendu des listes d’informations

Ouvrez la classe HelloWorldWebPart .

Remarque

SharePoint Framework vous offre des options pour détecter les détails de l’environnement et l’emplacement de l’hôte à l’aide de la propriété isServedFromLocalhost ou avec les détails d’EnvironmentType. Dans ce cas, nous allons nous concentrer sur la connexion aux données du site qui héberge le workbench en ligne.

  1. Ajoutez la méthode privée suivante à l’intérieur de la classe HelloWorldWebPart :

    private _renderList(items: ISPList[]): void {
      let html: string = '';
      items.forEach((item: ISPList) => {
        html += `
      <ul class="${styles.list}">
        <li class="${styles.listItem}">
          <span class="ms-font-l">${item.Title}</span>
        </li>
      </ul>`;
      });
    
      if(this.domElement.querySelector('#spListContainer') != null) {
        this.domElement.querySelector('#spListContainer')!.innerHTML = html;
      }
    }
    

    Cette méthode référence les nouveaux styles CSS ajoutés précédemment à l’aide de la variable styles et est utilisée pour afficher les informations de liste qui seront reçues de l’API REST.

  2. Enregistrez le fichier.

  3. Ajoutez la méthode privée suivante à l’intérieur de la classe HelloWorldWebPart afin d’appeler la méthode pour récupérer les données de liste :

    private _renderListAsync(): void {
      this._getListData()
        .then((response) => {
          this._renderList(response.value);
        })
        .catch(() => {});
    }
    
  4. Enregistrez le fichier.

Récupération des données de liste

  1. Accédez à la méthode render() et remplacez le code à l’intérieur de la méthode par le suivant :

    this.domElement.innerHTML = `
    <section class="${styles.helloWorld} ${!!this.context.sdks.microsoftTeams ? styles.teams : ''}">
      <div class="${styles.welcome}">
        <img alt="" src="${this._isDarkTheme ? require('./assets/welcome-dark.png') : require('./assets/welcome-light.png')}" class="${styles.welcomeImage}" />
        <h2>Well done, ${escape(this.context.pageContext.user.displayName)}!</h2>
        <div>${this._environmentMessage}</div>
      </div>
      <div>
        <h3>Welcome to SharePoint Framework!</h3>
        <div>Web part description: <strong>${escape(this.properties.description)}</strong></div>
        <div>Web part test: <strong>${escape(this.properties.test)}</strong></div>
        <div>Loading from: <strong>${escape(this.context.pageContext.web.title)}</strong></div>
      </div>
      <div id="spListContainer" />
    </section>`;
    
    this._renderListAsync();
    
  2. Enregistrez le fichier.

    Notez que cela régénère le code dans la fenêtre gulp serve de la console. Vérifiez qu’il n’y a pas d’erreurs.

  3. Si vous utilisez SharePoint Framework v1.12.1 ou version antérieure, par exemple si vous êtes sur SharePoint Server en local, basculez vers votre workbench local et ajoutez le composant WebPart HelloWorld.

    Vous devriez normalement voir les données de liste renvoyées.

    Affichage des données de listes à partir de l’hôte local

  4. Vous pouvez maintenant arrêter l’exécution du serveur. Passez sur la console et arrêtez gulp serve. Sélectionnez CTRL+C pour arrêter la tâche gulp.

Étapes suivantes

Félicitations, vous avez connecté votre composant WebPart aux données des listes SharePoint.

Vous pouvez continuer à créer votre composant WebPart Hello World dans l’article suivant Déployer votre composant WebPart sur une page SharePoint. Vous allez découvrir comment déployer le composant WebPart HelloWorld et en afficher un aperçu dans une page SharePoint.