How to create Experience Fragment in AEM 6.5- React SPA

Avatar

Avatar

papenaarun

Avatar

papenaarun

papenaarun

13-12-2020

We have AEM project which was created with AEM architype 22 for AEM - React SPA.

In static templates we can use iParsys for inheriting any components to its child pages and also can cancel inheritance in page level.

As in newer AEM verison we are using Editable templates, and how do we achieve similar functionality?

I came to know that iParsys cant be used in Editable Templates and also not recommended.

I found reference for creating XF's but not for SPA.

 

Can someone please help on Creating XF's for AEM - React SPA?

 

 

 

Accepted Solutions (1)

Accepted Solutions (1)

Avatar

Avatar

Anudeep_Garnepudi

MVP

Avatar

Anudeep_Garnepudi

MVP

Anudeep_Garnepudi
MVP

21-12-2020

Answers (1)

Answers (1)

Avatar

Avatar

shelly-goel

MVP

Avatar

shelly-goel

MVP

shelly-goel
MVP

22-12-2020

@papenaarun 

Does your other react components (other than XF) render on this page? It's possible the react library is not available or the app is not initialized where you added the XF.

papenaarun

Yes, Other components which are created in React are loading without any issue.

In fact the XF for which I have created in React is loading but the components which are added not getting populated.

Check the React component for XF.

/*
ExperienceFragment.js

Maps to cq/experience-fragments/editor/components/experiencefragment
*/

import React from 'react';
import { MapTo, Container } from '@adobe/cq-react-editable-components';

/**
* Default Edit configuration for the Text component that interact with the Core ExperienceFragment component.
*
* @TyPe EditConfig
*/
const ExperienceFragmentConfig = {
emptyLabel: 'Experience Fragment',
isEmpty: function(props) {
var itemsOrder = props["cqItemsOrder"];
return !(itemsOrder && itemsOrder.length);

}

};

/**
* Text React component
*/
export default class ExperienceFragment extends Container {

render() {
console.log(JSON.stringify(this.props));
return (<div className="ExperienceFragment">
{this.childComponents}
</div>);
}
}

MapTo('cq/experience-fragments/editor/components/experiencefragment')(
ExperienceFragment,
ExperienceFragmentConfig
);

 

papenaarun_0-1608699597403.png


 
Updating Media