So Zeigen Sie Die Elemente Einer SharePoint-Liste In Einer Webpart Mit Fluent UI An
Wenn Sie Schwierigkeiten haben, die Elemente einer SharePoint-Liste in einer Webpart des SharePoint Frameworks (SPFx) mit React und Fluent UI anzuzeigen, hilft Ihnen diese Schritt-für-Schritt-Anleitung, eine funktionierende Lösung zu erstellen. Wenn Sie Fehler wie undefined erhalten oder wenn die Listenelemente nicht korrekt an Ihre .tsx-Komponente übergeben werden, wird Sie dieser Artikel durch den Aufbau einer funktionierenden Lösung führen.
Einleitung
In diesem Artikel zeige ich Ihnen, wie Sie:
- Die SPFx-Webpart einrichten.
- Die Elemente einer SharePoint-Liste mit PnPjs in Ihrer
.ts-Datei abrufen. - Diese Listenelemente als Props an die
.tsx-Komponente übergeben und sie mit React anzeigen.
Schritt 1: Die SPFx-Webpart Einrichten
Zuerst erstellen wir eine grundlegende SPFx-Webpart mit dem Yeoman-Generator und installieren PnPjs, um die Operationen mit den Listen zu erleichtern.
1. Ein Neues SPFx-Projekt Erstellen
Öffnen Sie Ihr Terminal und erstellen Sie ein neues SPFx-Projekt mit Yeoman. Wählen Sie React als Framework aus, wenn Sie dazu aufgefordert werden.
yo @microsoft/sharepoint
Stellen Sie sicher, dass Sie die Umgebung für React einrichten.
2. PnPjs Installieren
PnPjs ist eine leistungsstarke Bibliothek, die die Arbeit mit SharePoint vereinfacht. Wir werden sie verwenden, um die Elemente einer SharePoint-Liste abzurufen.
npm install @pnp/sp @pnp/spfx-controls-react --save
Schritt 2: Die Listenelemente In Der .ts-Datei Abrufen
Als Nächstes konfigurieren wir die Haupt-TypeScript-Datei (WebPart.ts), um die Elemente einer SharePoint-Liste abzurufen und sie an die React-Komponente zu übergeben.
1. Die Notwendigen Bibliotheken Importieren
Importieren Sie in Ihrer Datei WebPart.ts die erforderlichen Bibliotheken für PnPjs und React.
import { spfi, SPFx } from '@pnp/sp';
import "@pnp/sp/webs";
import "@pnp/sp/lists";
import "@pnp/sp/items";
import * as React from 'react';
import * as ReactDom from 'react-dom';
import { BaseClientSideWebPart } from '@microsoft/sp-webpart-base';
import PnPGetListItems, { IPnPGetListItemsProps } from './components/PnPGetListItems';
2. PnPjs In onInit() Initialisieren
Initialisieren Sie PnPjs im onInit()-Methode, damit Sie es verwenden können, um die Listenelemente abzurufen.
protected onInit(): Promise<void> {
spfi().using(SPFx(this.context));
return super.onInit();
}
3. Eine Funktion Zum Abrufen Der Listenelemente Erstellen
Erstellen Sie eine private Funktion, die die Listenelemente abruft und sie als Promise zurückgibt. Rufen Sie diese Funktion dann in der Methode render() auf und übergeben Sie die Daten an die React-Komponente.
private async _getListItems(): Promise<any[]> {
try {
const items: any[] = await spfi().web.lists.getByTitle('YourListName').items();
return items;
} catch (error) {
console.error('Fehler beim Abrufen der Listenelemente: ', error);
return [];
}
}
public async render(): Promise<void> {
const items: any[] = await this._getListItems();
const element: React.ReactElement<IPnPGetListItemsProps> = React.createElement(
PnPGetListItems,
{
items: items // Übergeben Sie die Listenelemente an die React-Komponente
}
);
ReactDom.render(element, this.domElement);
}
In diesem Code:
- Ersetzen Sie
'YourListName'durch den tatsächlichen Namen Ihrer SharePoint-Liste. - Die Funktion
_getListItems()ruft die Listenelemente ab, undrender()übergibt sie als Props an die React-KomponentePnPGetListItems.
Schritt 3: Die Listenelemente Mit React Anzeigen
Jetzt, da wir die Listenelemente an die .tsx-Datei übergeben, sehen wir uns an, wie wir sie im React-Komponenten anzeigen können.
1. Die Props Für Die Komponente Definieren
Definieren Sie in der Datei PnPGetListItems.tsx eine Schnittstelle für die Props, die die Listenelemente enthalten.
export interface IPnPGetListItemsProps {
items: any[];
}
2. Die Listenelemente Anzeigen
Schreiben Sie nun die Logik, um die Listenelemente anzuzeigen. In diesem Beispiel zeigen wir sie in einer HTML-Tabelle an.
import * as React from 'react';
import { IPnPGetListItemsProps } from './IPnPGetListItemsProps';
const PnPGetListItems: React.FC<IPnPGetListItemsProps> = (props) => {
return (
<div>
<h2>Elemente der SharePoint-Liste</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>Title</th>
</tr>
</thead>
<tbody>
{props.items.map((item) => (
<tr key={item.Id}>
<td>{item.Id}</td>
<td>{item.Title}</td>
</tr>
))}
</tbody>
</table>
</div>
);
};
export default PnPGetListItems;
In dieser Komponente:
- Die
itemswerden in einer HTML-Tabelle angezeigt. - Jedes Listenelement wird als Zeile dargestellt, die seine
IDundTitleanzeigt.
Tipps zur Fehlersuche: Überprüfung von State und Props
Um sicherzustellen, dass die Listenelemente korrekt übergeben werden, können Sie console.log-Anweisungen in der Komponente hinzufügen, um den Wert von props.items zu überprüfen.
console.log(props.items);
Dies hilft Ihnen, zu überprüfen, ob die Daten korrekt übergeben und im Komponenten gemappt werden.
Testen der Webpart
Nachdem Sie die Konfiguration abgeschlossen haben, führen Sie den folgenden Befehl aus, um Ihre Webpart zu starten und im SharePoint-Workbench zu testen.
gulp serve
Wenn Sie das SharePoint-Workbench öffnen, sollten Sie Ihre Webpart sehen und die Elemente Ihrer Liste sollten in Tabellenform angezeigt werden.
Fazit
In diesem Artikel haben wir eine SPFx-Webpart erstellt, die die Elemente einer SharePoint-Liste mit PnPjs abruft und sie in einer React-Komponente anzeigt. Indem wir die Listenelemente von der .ts-Datei an die .tsx-Komponente über Props übergeben, können Sie einen reibungslosen Datenfluss und eine korrekte Anzeige auf dem Bildschirm gewährleisten.
Wenn Sie weiterhin auf undefined-Fehler oder Probleme bei der Anzeige der Liste stoßen, überprüfen Sie Folgendes:
- Stellen Sie sicher, dass der Listenname korrekt ist.
- Verwenden Sie
console.log, um Props und State zu debuggen.
Dieser Leitfaden sollte Ihnen helfen, die Probleme zu beheben, auf die Sie gestoßen sind, und eine funktionierende Webpart zu erstellen, um die Elemente Ihrer SharePoint-Listen mithilfe von Fluent UI oder einem anderen Framework Ihrer Wahl anzuzeigen.

Leave a comment