Componentes fijos editables
- El Editor universal para editar contenido sin encabezado de forma visual.
- El Editor de fragmentos de contenido para la edición de contenido sin encabezado basada en formularios.
Los componentes de React editables pueden ser "fijos" o codificados en las vistas de la SPA. Esto permite a los desarrolladores colocar componentes compatibles con el Editor de SPA en las vistas de SPA y a los usuarios crear el contenido de los componentes en el Editor de SPA de AEM.
En este capítulo, reemplazamos el título de la vista Inicio, "Aventuras actuales", que es texto codificado en Home.js
con un componente de título fijo pero editable. Los componentes fijos garantizan la colocación del título, pero también permiten crear el texto del título y cambiarlo fuera del ciclo de desarrollo.
Actualización de la aplicación WKND
Para agregar un componente Fixed a la vista Inicio:
- Cree un componente de título editable personalizado y regístrelo en el tipo de recurso Título del proyecto
- Coloque el componente Título editable en la vista Inicio de la SPA
Crear un componente de título de React editable
En la vista Inicio de la SPA, reemplace el texto predefinido <h2>Current Adventures</h2>
por un componente de título editable personalizado. Para poder utilizar el componente Título, debemos hacer lo siguiente:
- Crear un componente React de título personalizado
- Decore el componente Título personalizado con los métodos de
@adobe/aem-react-editable-components
para que se pueda editar. - Registre el componente de título editable con
MapTo
para que pueda usarse en componente contenedor más adelante.
Para ello, haga lo siguiente:
-
Abrir proyecto de SPA remoto en
~/Code/aem-guides-wknd-graphql/remote-spa-tutorial/react-app
en su IDE -
Crear un componente de React en
react-app/src/components/editable/core/Title.js
-
Agregue el siguiente código a
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
Tenga en cuenta que este componente de React aún no se puede editar con AEM SPA Editor. Este componente base se podrá editar en el siguiente paso.
Lea los comentarios del código para obtener más información sobre la implementación.
-
Crear un componente de React en
react-app/src/components/editable/EditableTitle.js
-
Agregue el siguiente código a
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;
Este componente de React
EditableTitle
ajusta el componente de ReactTitle
, ajustándolo y decorándolo para que pueda editarse en el Editor de SPA de AEM.
Uso del componente React EditableTitle
Ahora que el componente React Título editable está registrado en y disponible para usar en la aplicación React, reemplace el texto de título predefinido en la vista Inicio.
-
Editar
react-app/src/components/Home.js
-
En
Home()
, en la parte inferior, importeEditableTitle
y reemplace el título predefinido por el nuevo componenteAEMTitle
: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> ); }
El archivo Home.js
debe tener el siguiente aspecto:
Crear el componente Título en AEM
-
Iniciar sesión en AEM Author
-
Vaya a Sitios > Aplicación WKND
-
Pulse Inicio y seleccione Editar en la barra de acciones superior
-
Seleccione Editar del selector de modo de edición en la parte superior derecha del Editor de páginas
-
Pase el ratón sobre el texto del título predeterminado debajo del logotipo de WKND y encima de la lista de aventuras hasta que se muestre el contorno de edición azul
-
Puntee para mostrar la barra de acciones del componente y, a continuación, puntee en la llave inglesa que desea editar
-
Cree el componente Título:
-
Título: WKND Adventures
-
Tipo/Tamaño: H2
-
-
Pulse Listo para guardar
-
Previsualice los cambios en el Editor de SPA de AEM
-
Actualice la aplicación WKND que se ejecuta localmente en http://localhost:3000 y vea los cambios de título creados inmediatamente reflejados.
Enhorabuena.
¡Ha agregado un componente fijo editable a la aplicación WKND! Ahora ya sabe cómo:
- Se ha creado un componente fijo, pero editable, en la SPA
- Crear el componente fijo en AEM
- Ver el contenido creado en la SPA remota
Siguientes pasos
Los siguientes pasos son agregar un componente contenedor de AEM ResponsiveGrid a la SPA que permita al autor agregar y editar componentes a la SPA.