Componentes fijos editables

SPA Los componentes de React editables pueden ser "fijos" o codificados en las vistas de la. SPA SPA AEM SPA Esto permite a los desarrolladores colocar componentes compatibles con el Editor de la en las vistas de componentes y permitir a los usuarios crear el contenido de los componentes en el Editor de la.

Componentes fijos

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
  • SPA Coloque el componente Título editable en la vista Inicio de la

Crear un componente de título de React editable

SPA En la vista Página de inicio de la, 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:

  1. Crear un componente React de título personalizado
  2. Decore el componente Título personalizado con los métodos de @adobe/aem-react-editable-components para que se pueda editar.
  3. Registre el componente de título editable con MapTo para que pueda usarse en componente contenedor más adelante.

Para ello, haga lo siguiente:

  1. SPA Abrir el proyecto de Remote en ~/Code/aem-guides-wknd-graphql/remote-spa-tutorial/react-app en su IDE

  2. Crear un componente de React en react-app/src/components/editable/core/Title.js

  3. 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
    

    AEM SPA Tenga en cuenta que este componente de React aún no se puede editar con el Editor de. 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.

  4. Crear un componente de React en react-app/src/components/editable/EditableTitle.js

  5. 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;
    

    AEM SPA Este componente de React EditableTitle ajusta el componente de React Title, ajustándolo y decorándolo para que pueda editarse en el Editor de.

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.

  1. Editar react-app/src/components/Home.js

  2. En Home(), en la parte inferior, importe EditableTitle y reemplace el título predefinido por el nuevo componente AEMTitle:

    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:

Home.js

AEM Cree el componente Título en el menú de

  1. AEM Iniciar sesión en el autor de la

  2. Vaya a Sitios > Aplicación WKND

  3. Pulse Inicio y seleccione Editar en la barra de acciones superior

  4. Seleccione Editar del selector de modo de edición en la parte superior derecha del Editor de páginas

  5. 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

  6. Puntee para mostrar la barra de acciones del componente y, a continuación, puntee en la llave inglesa que desea editar

    Barra de acciones del componente Título

  7. Cree el componente Título:

    • Título: WKND Adventures

    • Tipo/Tamaño: H2

      Cuadro de diálogo del componente Título

  8. Pulse Listo para guardar

  9. AEM SPA Previsualice los cambios en el editor de

  10. Actualice la aplicación WKND que se ejecuta localmente en http://localhost:3000 y vea los cambios de título creados inmediatamente reflejados.

    SPA Componente de título en el código de tiempo de trabajo

Enhorabuena.

¡Ha agregado un componente fijo editable a la aplicación WKND! Ahora ya sabe cómo:

  • SPA Se ha creado un componente fijo, pero editable, para el grupo de informes de
  • AEM Creación del componente fijo en el entorno de trabajo de
  • SPA Ver el contenido creado en la interfaz de usuario de la aplicación remota

Pasos siguientes

AEM SPA SPA Los siguientes pasos son agregar un componente contenedor de cuadrícula adaptablepara la que permita al autor agregar y editar los componentes a la plantilla de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de la lista de elementos de.

recommendation-more-help
e25b6834-e87f-4ff3-ba56-4cd16cdfdec4