How can I help you?
Getting started with the React Timeline component
6 Feb 20267 minutes to read
This section explains how to create and configure a simple Timeline in a React application using Syncfusion Essential JS 2.
Dependencies
The following list of dependencies is required to use the Timeline component in the application.
|-- @syncfusion/ej2-react-layouts
|-- @syncfusion/ej2-base
|-- @syncfusion/ej2-layouts
|-- @syncfusion/ej2-react-baseInstallation and Configuration
To quickly set up a React application, use create-vite-app, which provides a faster development environment, smaller bundle sizes, and optimized builds compared to traditional tools like create-react-app. For detailed steps, refer to the Vite installation instructions. Vite configures the development environment using modern tooling and optimizes the application for production.
Note: To create a React application using
create-react-app, refer to this documentation for more details.
To create a new React application, run the following command.
npm create vite@latest my-appTo set-up a React application in TypeScript environment, run the following command.
npm create vite@latest my-app -- --template react-ts
cd my-app
npm run devTo set-up a React application in JavaScript environment, run the following command.
npm create vite@latest my-app -- --template react
cd my-app
npm run devAdding Syncfusion® packages
All the available Essential® JS 2 packages are published in npmjs.com public registry.
To install Timeline component, use the following command
npm install @syncfusion/ej2-react-layouts --saveAdding CSS Reference
Import the required CSS references for the Timeline component in src/App.css as shown below.
@import "../node_modules/@syncfusion/ej2-base/styles/tailwind3.css";
@import "../node_modules/@syncfusion/ej2-layouts/styles/tailwind3.css";Adding Timeline component to the application
To include the Timeline component in the application, import the TimelineComponent from the ej2-react-layouts package into the App.tsx file.
Each Timeline item is defined using the ItemDirective, which must be placed inside the ItemsDirective. The ItemsDirective acts as a container for managing multiple Timeline items, and each ItemDirective represents an individual entry in the Timeline.
import { TimelineComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-layouts';
import * as React from "react";
import * as ReactDOM from "react-dom";
import "./App.css";
function App() {
return (
<div id='timeline' style={{ height: "350px" }}>
<TimelineComponent>
<ItemsDirective>
<ItemDirective />
<ItemDirective />
<ItemDirective />
<ItemDirective />
</ItemsDirective>
</TimelineComponent>
</div>
);
}
const root = ReactDOM.createRoot(document.getElementById("element"));
root.render(<App />);Running the application
Run the npm run dev command in the console to start the development server. This command compiles the application and serves it locally, making it available in the browser.
npm run dev
The following example shows a basic Timeline component.
import * as React from "react";
import * as ReactDom from "react-dom";
import { TimelineComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-layouts';
function App() {
return (
<div id='timeline' style={{ height: "350px" }}>
<TimelineComponent>
<ItemsDirective>
<ItemDirective />
<ItemDirective />
<ItemDirective />
<ItemDirective />
</ItemsDirective>
</TimelineComponent>
</div>
);
}
export default App;
ReactDom.render(<App />, document.getElementById("element"));import * as React from "react";
import * as ReactDom from "react-dom";
import { TimelineComponent, ItemsDirective, ItemDirective } from '@syncfusion/ej2-react-layouts';
function App() {
return (
<div id='timeline' style={{ height: "320px" }}>
<TimelineComponent>
<ItemsDirective>
<ItemDirective />
<ItemDirective />
<ItemDirective />
<ItemDirective />
</ItemsDirective>
</TimelineComponent>
</div>
);
}
export default App;
ReactDom.render(<App />, document.getElementById("element"));<!DOCTYPE html>
<html lang="en">
<head>
<title>Syncfusion EJ2 React Timeline 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/32.2.3/ej2-base/styles/tailwind3.css" rel="stylesheet" />
<link href="https://cdn.syncfusion.com/ej2/32.2.3/ej2-layouts/styles/tailwind3.css" rel="stylesheet" />
<link href="index.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id='element' style="margin-top: 30px;">
<div id='loader'>Loading....</div>
</div>
</body>
</html>