top of page
Anwaarul Haque

Creating Dynamic Grid Layouts with React-Grid-Layout in React.js

Updated: Mar 4, 2024


Creating Dynamic Grid Layouts with React-Grid-Layout in React.js - Illustration demonstrating the creation of dynamic grid layouts using React-Grid-Layout in React.js.

In the dynamic world of web development, creating responsive and flexible layouts is a crucial aspect of designing modern user interfaces. React, a popular JavaScript library for building user interfaces offers various tools and libraries to simplify this process. One such powerful tool is React-Grid-Layout, which provides a flexible grid layout system for React applications.


What is React-Grid-Layout?

React-Grid-Layout is a responsive grid layout system for React that allows you to create draggable, resizable, and adaptive grid layouts. It's particularly useful for dashboard-like applications where users can customize the arrangement and size of components according to their preferences.


Getting Started:

To get started with React-Grid-Layout, you first need to install it in your project. You can do this using npm or yarn:


npm install react-grid-layout

 	or

yarn add react-grid-layout

Once installed, you can import it into your React component:

import ReactGridLayout from 'react-grid-layout';

 Basic Usage:

Let's go through the basic steps to use React-Grid-Layout in a React application.

Set Up a Basic Grid:

Start by defining a basic grid with the desired number of rows and columns. You can also specify the width and height of the grid items:

import ReactGridLayout from 'react-grid-layout';

const MyGrid = () => {
  const layout = [
    { i: 'a', x: 0, y: 0, w: 1, h: 2 },
    { i: 'b', x: 1, y: 0, w: 3, h: 2 },
    { i: 'c', x: 4, y: 0, w: 1, h: 2 },
  ];

  return (
    <ReactGridLayout className="layout" layout={layout} cols={12} rowHeight={30} width={1200}>
      <div key="a">A</div>
      <div key="b">B</div>
      <div key="c">C</div>
    </ReactGridLayout>
  );
};

export default MyGrid;

Make Items Draggable and Resizable:


By default, items in the grid are static. To make them draggable and resizable, you need to enable these features:


<ReactGridLayout
  className="layout"
  layout={layout}
  cols={12}
  rowHeight={30}
  width={1200}
  draggableHandle=".drag-handle"
  draggableCancel=".non-draggable"
  isDraggable
  isResizable
>
  <div key="a" className="draggable-handle">
    A
    <span className="non-draggable"> (non-draggable)</span>
  </div>
  <div key="b" className="draggable-handle">
    B
    <span className="non-draggable"> (non-draggable)</span>
  </div>
  <div key="c" className="draggable-handle">
    C
    <span className="non-draggable"> (non-draggable)</span>
  </div>
</ReactGridLayout>

In this example, the `draggableHandle` prop specifies a CSS selector for the handle that users can drag. The `draggableCancel` prop specifies a selector for elements inside the grid item that should not trigger dragging.


Handle Grid Item Changes:

React-Grid-Layout provides an `onLayoutChange` prop that allows you to handle changes to the grid layout:


const handleLayoutChange = (newLayout) => {
  console.log('New layout:', newLayout);
  // You can save the new layout state to your application state or server
};

<ReactGridLayout
  className="layout"
  layout={layout}
  cols={12}
  rowHeight={30}
  width={1200}
  onLayoutChange={handleLayoutChange}
>
  {/* Grid items */}
</ReactGridLayout>

In the handleLayoutChange function, you can implement logic to update the layout state in your application.


Customizing the Grid:

React-Grid-Layout offers a wide range of customization options, including specifying breakpoints for responsive layouts, setting min and max dimensions for items, and defining grid spacing. Explore the documentation to discover more advanced features and options.


Conclusion:

React-Grid-Layout is a powerful tool for creating responsive and dynamic grid layouts in React applications. By incorporating draggable and resizable features, developers can empower users to customize their layouts according to their preferences. Whether you're building dashboards, data visualization tools, or any application with a flexible UI, React-Grid-Layout can be a valuable addition to your toolkit. Take advantage of its features and unleash the potential of dynamic layouts in your React projects.


77 views0 comments
bottom of page