Einführung in die Verwendung von React innerhalb einer Power Apps-Komponente
React ist ein standardisiertes Client-Framework, das für das Erstellen von Benutzeroberflächen erstellt wird. Es bietet eine deklarative Möglichkeit zum Erstellen interaktiver Benutzeroberflächen und einen Mechanismus zum Einschließen von Komponenten, um komplexe Benutzeroberflächen zu erstellen, die Komponentenzustände verwalten und eine hohe Interaktivität aufweisen. Da React in JavaScript geschrieben ist, können Sie dieses Framework in einer Power Apps-Komponente verwenden.
Wenn React für Sie neu ist, wechseln Sie zu React. Hier finden Sie eine Vielzahl von Tutorials und Ressourcen zum Erstellen von React-Komponenten.
Ihren Computer auf Codekomponenten vorbereiten
Führen Sie die folgenden Schritte aus, um Ihren Computer darauf vorzubereiten, Codekomponenten zu erstellen:
Installieren Sie Npm (in Node.js enthalten) oder Node.js (in npm enthalten). Wir empfehlen die Verwendung einer LTS-Version (Long Term Support).
Installieren Sie Visual Studio Code.
Installieren Sie Power Platform Tools-Erweiterung.
Installieren Sie die Build Tools für Visual Studio von Visual Studio-Downloads.
Fluent UI
Eine der vielen großartigen Entwicklungen von Microsoft war die Implementierung von Fluent UI, einer Sammlung von UX-Frameworks, mit denen Sie reibungslose Erfahrungen erstellen können, die sich nahtlos in eine breite Palette von Microsoft-Produkten einfügen. Fluent UI in Ihrer Power Apps Code-Komponente zu verwenden, ist so einfach wie das Verweisen auf seine Bibliotheken und bietet eine React-spezifische Version, die Sie verwenden können. Weitere Informationen finden Sie unter Fluent UI.
Eine beispielhafte FacePile-Komponente implementieren
Wichtig
Laden Sie für diese Übung die ZIP-Datei FacePileComponent.zip herunter. Extrahieren Sie die ZIP-Datei.
In diesem Beispiel erstellen Sie eine Komponente, die die FacePile Fluent UI-Komponente verwendet. Die FacePile zeigt eine Liste von Gesichtern oder Initialen in einer horizontalen Suche, wobei jeder Kreis eine Person darstellt.
Ein praktisches Beispiel für die Verwendung dieser Suche ist das Auflisten von Mitwirkenden an einem Artikel oder Datensatz, z. B. in Microsoft Learn, wie in der folgenden Abbildung dargestellt.
Neues Komponentenprojekt erstellen
Gehen Sie wie folgt vor, um ein Komponentenprojekt zu erstellen:
Legen Sie ein Verzeichnis an, in dem Sie Ihre Komponente erstellen. In diesem Beispiel legen Sie die Komponente unter C:\users\username\source\face-pile ab. Sie können aber auch ein eigenes Verzeichnis erstellen. Für die Erstellung eines eigenen Verzeichnisses verwenden Sie Visual Studio Code.
Starten Sie Visual Studio Code.
Wählen Sie Terminal und Neues Terminal aus, und schalten Sie das Terminal-Shell auf Eingabeaufforderung.
Hinweis
Wenn Sie mit dem Terminal in Visual Studio Code nicht vertraut sind, wechseln Sie zu Terminal-Grundlagen, um mehr zu erfahren.
Erstellen Sie Ihren Quellordner.
md \source
Wechseln Sie das Verzeichnis zu Ihrem Quellordner.
cd \source
Erstellen Sie aus Ihrem Quellverzeichnis ein Verzeichnis mit dem Namen face-pile.
md face-pile
Wechseln Sie zum von Ihnen erstellten Verzeichnis.
cd face-pile
Sie sollten sich jetzt in dem von Ihnen neue erstellten Verzeichnis befinden.
Initialisieren Sie Ihr Komponentenprojekt mit der Power Platform CLI über den folgenden Befehl.
pac pcf init --namespace Learn --name ReactFacePile --template field --framework React
Installieren Sie die Projekterstellungstools mit dem Befehl
npm install
. Möglicherweise werden einige Warnungen angezeigt. Sie können sie jedoch sicher ignorieren.npm install
Führen Sie den folgenden Befehl aus, um das Projekt in Visual Studio Code zu öffnen.
code -a .
Das Projekt sollte wie in der folgenden Abbildung aussehen.
Logik der Codekomponente implementieren
Gehen Sie wie folgt vor, um die Logik der Codekomponente zu implementieren:
Erweitern Sie den Ordner ReactFacePile, und öffnen Sie die Datei ControlManifest.Input.xml.
Suchen Sie den Knoten property, und ersetzen Sie ihn durch das folgende XML:
<property name="numberOfFaces" display-name-key="numberOfFaces_Display_Key" description-key="numberOfFaces_Desc_Key" of-type="Whole.None" usage="bound" required="false" />
Suchen Sie die Ressourcen, und löschen Sie den Kommentar für CSS und Resx.
Stellen Sie sicher, dass die Datei ControlManifest.Input.xml noch ausgewählt ist, und klicken Sie dann auf New Folder.
Nennen Sie den neuen Ordner components.
Wechseln Sie zu dem Ordner, in den Sie die heruntergeladene Datei FacePileComponent.zip extrahiert haben, und öffnen Sie den Ordner FacePileComponent.
Ziehen Sie die Dateien in den FacePileComponents-Ordner, und legen Sie sie in dem von Ihnen erstellten components-Ordner ab.
Im Komponentenordner sollten jetzt zwei Dateien vorhanden sein.
Öffnen Sie die Datei Index.ts.
Ersetzen Sie den Import { HelloWorld, IHelloWorldProps } from "./HelloWorld"; mit diesem Ausschnitt.
import { FacepileBasicExample, IFacepileBasicExampleProps } from "./components/Facepile" ;
Fügen Sie nach den Imports die folgende Konstante hinzu.
const DEFAULT_NUMBER_OF_FACES = 3;
Fügen Sie den Ausschnitt vor dem Konstruktor hinzu.
private props: IFacepileBasicExampleProps = { numberFacesChanged: this.numberFacesChanged.bind(this), };
Die von Ihnen vorgenommenen Änderungen sollten nun wie im folgenden Bild aussehen.
Suchen Sie die Methode init, und fügen Sie nach der Zeile „this.notifyOutputChanged = notifyOutputChanged; line“ das folgende Snippet hinzu
this.props.numberOfFaces = context.parameters.numberOfFaces.raw || DEFAULT_NUMBER_OF_FACES;
Ersetzen Sie die Methode updateView durch die folgende Methode.
public updateView(context: ComponentFramework.Context<IInputs>): React.ReactElement { if (context.updatedProperties.indexOf("numberOfFaces") > -1) { this.props.numberOfFaces = context.parameters.numberOfFaces.raw || DEFAULT_NUMBER_OF_FACES; } return React.createElement(FacepileBasicExample, this.props); }
Die Methoden init und updateView sollten jetzt wie in der folgenden Abbildung aussehen.
Ersetzen Sie die Methode getOutputs durch die folgende Methode.
public getOutputs(): IOutputs { return { numberOfFaces: this.props.numberOfFaces, }; }
Fügen Sie die folgende Methode nach der Methode „destroy“ hinzu.
private numberFacesChanged(newValue: number) { if (this.props.numberOfFaces !== newValue) { this.props.numberOfFaces = newValue; this.notifyOutputChanged(); } }
Wählen Sie Datei aus, und Alle speichern Sie alle Ihre Änderungen.
Ihrer Codekomponente Stil hinzufügen
Gehen Sie wie folgt vor, um Ihrer Codekomponente einen Stil hinzuzufügen:
Wählen Sie die Datei ControlManifest.Input.xml und dann New Folder aus.
Nennen Sie den neuen Ordner css.
Wählen Sie den von Ihnen erstellten Ordner css aus, und klicken Sie dann auf Neue Datei.
Geben Sie der neuen Datei den Namen ReactFacePile.css.
Öffnen Sie die neu erstellte Datei ReactFacePile.css, und fügen Sie den Ausschnitt CSS ein.
msFacepileExample { max-width: 300px; } .msFacepileExample .control { padding-top: 20px; } .msFacepileExample .ms-Dropdown-container, .msFacepileExample.ms-Slider { margin: 10px 0 10px 0; } .msFacepileExample .ms-Dropdown-container .ms-Label { padding-top: 0; } .msFacepileExample .ms-Checkbox { padding-top: 15px; } .exampleCheckbox { margin: 10px 0; } .exampleLabel { margin: 10px 0; }
Wählen Sie Datei aus, und Speichern Sie Ihre Änderungen.
Wählen Sie die Datei ControlManifest.Input.xml und dann New Folder aus.
Nennen Sie den neuen Ordner strings.
Wechseln Sie zu dem Ordner, in den Sie die heruntergeladene Datei FacePileComponent.zip extrahiert haben, und öffnen Sie den Ordner FacePileStrings.
Ziehen Sie die Datei ReactFacePile.1033.resx, und legen Sie sie in dem von Ihnen erstellten Ordner strings ab.
Der Ordner „strings“ sollte jetzt die resx-Datei enthalten.
Wählen Sie Datei aus, und Speichern Sie Ihre Änderungen.
Navigieren Sie zum Terminal, und führen Sie diesen Erstellungsbefehl aus.
npm run build
Hinweis
Öffnen Sie die Datei .eslintrc.json, wenn Sie eine Fehlermeldung erhalten, dass JSX nicht festgelegt ist. In Zeile 11:
"ComponentFramework": true
, fügen Sie ein Komma hinzu und dann eine neue Zeile mit"JSX": true
. In Zeile 41: Ändern SieJSX.Element
inReact.JSX.Element
. Speichern Sie die Änderungen, und wiederholen Sie den Befehl „npm run build“.Die Erstellung sollte erfolgreich abgeschlossen werden.
Führen Sie den folgenden Befehl aus, um die Komponenten zu testen.
npm start
Die Testumgebung sollte ein neues Browserfenster öffnen.
Die Komponente sollte nun wie im folgenden Bild aussehen.
Ändern Sie die Größe des Containers auf 500 x 220, und bewegen Sie den Schieberegler auf 5.
Die Komponente sollte nun wie im folgenden Bild aussehen. Schließen Sie das Testumgebungs-Browserfenster.
Schließen Sie das Testumgebungs-Browserfenster.
Wechseln Sie zurück zum Terminal, und stoppen Sie den Beobachter, indem Sie [CONTROL] + C drücken.
Geben Sie Y ein, und drücken Sie dann [ENTER].
Weitere Informationen finden Sie unter Die FacePile-Komponente implementieren.