Having trouble getting help?
Contact Support
Contact Support
Load content through post in React Accordion component
30 Jan 20237 minutes to read
Accordion supports to load external contents through AJAX
library. Refer the below steps.
-
Import the
Ajax
module fromej2-base
and initialize with URL path. -
Get data from the Ajax Success event to initialize Accordion with retrieved external path data.
import * as React from "react";
import { useState, useEffect } from "react";
import { Ajax } from "@syncfusion/ej2-base";
import * as ReactDOM from "react-dom";
import { AccordionComponent, AccordionItemsDirective, AccordionItemDirective } from "@syncfusion/ej2-react-navigations";
const ReactApp = () => {
const [employeeDetails, setEmployeeDetails] = useState("");
useEffect(() => {
const ajax = new Ajax("./ajax.html", "GET", true);
ajax.send().then();
ajax.onSuccess = (dataSt) => {
setEmployeeDetails(dataSt);
};
}, []);
const deptContent = () => {
return (
<div>
<ul style=>
<li>Testing</li>
<li>Development</li>
</ul>
</div>
);
};
const platformContent = () => {
return (
<div>
<ul style=>
<li>Mobile</li>
<li>Web</li>
</ul>
</div>
);
};
return (
<AccordionComponent>
<AccordionItemsDirective>
<AccordionItemDirective header="Department" content={deptContent} />
<AccordionItemDirective header="Platform" content={platformContent} />
<AccordionItemDirective header="Employee Details" content={employeeDetails} />
</AccordionItemsDirective>
</AccordionComponent>
);
};
const root = ReactDOM.createRoot(document.getElementById('element'));
root.render(<ReactApp />);
import * as React from "react";
import { useState, useEffect } from "react";
import { Ajax } from "@syncfusion/ej2-base";
import * as ReactDOM from "react-dom";
import { AccordionComponent, AccordionItemsDirective, AccordionItemDirective } from "@syncfusion/ej2-react-navigations";
const ReactApp = () => {
const [employeeDetails, setEmployeeDetails] = useState("");
useEffect(() => {
const ajax = new Ajax("./ajax.html", "GET", true);
ajax.send().then();
ajax.onSuccess = (dataSt: string): void => {
setEmployeeDetails(dataSt);
};
}, []);
const deptContent = () => {
return (
<div>
<ul style=>
<li>Testing</li>
<li>Development</li>
</ul>
</div>
);
};
const platformContent = () => {
return (
<div>
<ul style=>
<li>Mobile</li>
<li>Web</li>
</ul>
</div>
);
};
return (
<AccordionComponent>
<AccordionItemsDirective>
<AccordionItemDirective header="Department" content={deptContent} />
<AccordionItemDirective header="Platform" content={platformContent} />
<AccordionItemDirective header="Employee Details" content={employeeDetails} />
</AccordionItemsDirective>
</AccordionComponent>
);
};
const root = ReactDOM.createRoot(document.getElementById('element'));
root.render(<ReactApp />);
<!DOCTYPE html>
<html lang="en">
<head>
<title>Essential JS 2 Accordion Ajax Sample</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Essential JS 2 for React Components" />
<meta name="author" content="Syncfusion" />
<link href="https://cdn.syncfusion.com/ej2/28.2.3/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<style>
#loader {
color: #008cff;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}
div#headername {
margin-left: 100px;
}
</style>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='element'>
<div id='loader'>Loading....</div></div>
</body>
</html>