Bewerkbare vaste componenten
- de Universele Redacteurvoor visueel het uitgeven van hoofdloze inhoud.
- de Redacteur van het Fragment van de Inhoudvoor op vorm-gebaseerde het uitgeven van hoofdloze inhoud.
Bewerkbare React componenten kunnen "vast"zijn, of hard-gecodeerd in de meningen van het KUUROORD. Dit staat ontwikkelaars toe om SPA Editor-compatibele componenten in de meningen van het KUUROORD te plaatsen, en gebruikers toe te staan om de inhoud van de componenten' in de Redacteur van AEM te schrijven SPA.
In dit hoofdstuk vervangen we de titel 'Huidige avonturen' van de weergave Home. Dit is een vaste, maar bewerkbare titel in Home.js
. Vaste componenten garanderen de plaatsing van de titel, maar staan ook toe dat de tekst van de titel wordt geschreven en dat de titel buiten de ontwikkelingscyclus wordt gewijzigd.
De WKND-app bijwerken
Om a Vaste component aan de mening van het Huis toe te voegen:
- Creeer een douane editable component van de Titel en registreer het aan het middeltype van de Titel van het project
- Plaats de editable component van de Titel op de mening van het Huis van SPA
Een bewerkbare component React Title maken
In de mening van het Huis van het KUUROORD, vervang de hard-gecodeerde tekst <h2>Current Adventures</h2>
met een douane editable component van de Titel. Voordat de component Titel kan worden gebruikt, moeten we:
- Een aangepaste component Title React maken
- Decoreer de component van de Titel van de douane gebruikend methodes van
@adobe/aem-react-editable-components
om het editable te maken. - Registreer de editable component van de Titel met
MapTo
zodat kan het in containercomponent laterworden gebruikt.
Dit doet u als volgt:
-
Open Verre project van het KUUROORD bij
~/Code/aem-guides-wknd-graphql/remote-spa-tutorial/react-app
in uw winde -
Een component React maken op
react-app/src/components/editable/core/Title.js
-
Voeg de volgende code toe aan
Title.js
.code language-javascript import React from 'react' import { RoutedLink } from "./RoutedLink"; const TitleLink = (props) => { return ( <RoutedLink className={props.baseCssClass + (props.nested ? '-' : '__') + 'link'} isRouted={props.routed} to={props.linkURL}> {props.text} </RoutedLink> ); }; const TitleV2Contents = (props) => { if (!props.linkDisabled) { return <TitleLink {...props} /> } return <>{props.text}</> }; export const Title = (props) => { if (!props.baseCssClass) { props.baseCssClass = 'cmp-title' } const elementType = (!!props.type) ? props.type.toString() : 'h3'; return (<div className={props.baseCssClass}> { React.createElement(elementType, { className: props.baseCssClass + (props.nested ? '-' : '__') + 'text', }, <TitleV2Contents {...props} /> ) } </div>) } export const titleIsEmpty = (props) => props.text == null || props.text.trim().length === 0
Merk op dat deze React component nog niet editable gebruikend de Redacteur van AEM SPA is. Deze basiscomponent wordt in de volgende stap bewerkbaar gemaakt.
Lees de opmerkingen van de code voor de implementatiedetails.
-
Een component React maken op
react-app/src/components/editable/EditableTitle.js
-
Voeg de volgende code toe aan
EditableTitle.js
.code language-javascript // Import the withMappable API provided bu the AEM SPA Editor JS SDK import { EditableComponent, MapTo } from '@adobe/aem-react-editable-components'; import React from 'react' // Import the AEM the Title component implementation and it's Empty Function import { Title, titleIsEmpty } from "./core/Title"; import { withConditionalPlaceHolder } from "./core/util/withConditionalPlaceholder"; import { withStandardBaseCssClass } from "./core/util/withStandardBaseCssClass"; // The sling:resourceType of the AEM component used to collected and serialize the data this React component displays const RESOURCE_TYPE = "wknd-app/components/title"; // Create an EditConfig to allow the AEM SPA Editor to properly render the component in the Editor's context const EditConfig = { emptyLabel: "Title", // The component placeholder in AEM SPA Editor isEmpty: titleIsEmpty, // The function to determine if this component has been authored resourceType: RESOURCE_TYPE // The sling:resourceType this component is mapped to }; export const WrappedTitle = (props) => { const Wrapped = withConditionalPlaceHolder(withStandardBaseCssClass(Title, "cmp-title"), titleIsEmpty, "TitleV2") return <Wrapped {...props} /> } // EditableComponent makes the component editable by the AEM editor, either rendered statically or in a container const EditableTitle = (props) => <EditableComponent config={EditConfig} {...props}><WrappedTitle /></EditableComponent> // MapTo allows the AEM SPA Editor JS SDK to dynamically render components added to SPA Editor Containers MapTo(RESOURCE_TYPE)(EditableTitle); export default EditableTitle;
Met deze component React van
EditableTitle
wordt de component React vanTitle
verpakt, verpakt en decoreert u deze om te kunnen worden bewerkt in de AEM SPA Editor.
De component React EditableTitle gebruiken
Nu de component EditableTitle React is geregistreerd in en beschikbaar is voor gebruik in de React-app, vervangt u de tekst van de hard-gecodeerde titel in de weergave Home.
-
Bewerken
react-app/src/components/Home.js
-
Importeer
EditableTitle
in deHome()
onderaan en vervang de hard-gecodeerde titel door de nieuweAEMTitle
-component:code language-javascript ... import EditableTitle from './editable/EditableTitle'; ... function Home() { return ( <div className="Home"> <EditableTitle pagePath='/content/wknd-app/us/en/home' itemPath='root/title'/> <Adventures /> </div> ); }
Het bestand Home.js
moet er als volgt uitzien:
De component Title in AEM ontwerpen
-
Aanmelden bij AEM-auteur
-
Navigeer aan Plaatsen > app WKND
-
Tik Huis en selecteer uitgeven van de hoogste actiebar
-
Selecteer uitgeven van uitgeeft wijzesselecteur in het hoogste recht van de Redacteur van de Pagina
-
Houd de muisaanwijzer boven de standaardtiteltekst onder het WKND-logo en boven de lijst met avonturen totdat de omtrek voor blauwe bewerking wordt weergegeven
-
Tik om de actiebar van de component bloot te stellen, en dan de moersleutel te ontsteken om uit te geven
-
Auteur van de component Title:
-
Titel: WKND avonturen
-
Type/Grootte: H2
-
-
Tik Gedaan om te bewaren
-
Voorvertoning van uw wijzigingen weergeven in de AEM SPA Editor
-
Vernieuw de WKND App die plaatselijk op http://localhost:3000loopt en zie de authored onmiddellijk weerspiegelde titelveranderingen.
Gefeliciteerd!
U hebt een vaste, bewerkbare component toegevoegd aan de WKND-app! Nu weet u hoe:
- Creeerde een vaste, maar editable, component aan SPA
- Auteur van de vaste component in AEM
- Zie de authored inhoud in het Verre KUUROORD
Volgende stappen
De volgende stappen moeten een de containercomponent van AEM ResponsiveGridaan het KUUROORD toevoegen die auteur toestaat om en editable componenten aan het KUUROORD toe te voegen!