Skip to content
dnd-grid

useContainerWidth

Measure and track container width.

DndGrid and ResponsiveDndGrid measure container width automatically. Use useContainerWidth when you need the width for custom constraints or to drive DndGrid/useDndGrid directly.

Example

import { useState } from "react";
import { DndGrid, type Layout, useContainerWidth } from "@dnd-grid/react";
import "@dnd-grid/react/styles.css";

const initialLayout: Layout = [
  { id: "a", x: 0, y: 0, w: 3, h: 2 },
  { id: "b", x: 3, y: 0, w: 3, h: 2 },
];

export function MeasuredGrid() {
  const [layout, setLayout] = useState(initialLayout);
  const { width, containerRef, mounted } = useContainerWidth({
    measureBeforeMount: true,
    initialWidth: 800,
  });

  return (
    <div ref={containerRef} style={{ width: "100%" }}>
      {mounted && width > 0 && (
        <DndGrid
          layout={layout}
          onLayoutChange={setLayout}
          cols={12}
          rowHeight={40}
          width={width}
        >
          <div key="a">A</div>
          <div key="b">B</div>
        </DndGrid>
      )}
    </div>
  );
}

Options

OptionTypeDefaultDescription
measureBeforeMountbooleanfalseDelay rendering until the first measurement. Useful for SSR.
initialWidthnumber1280Width value used before measuring.

Returns

ValueDescription
widthCurrent container width.
mountedtrue after the initial measurement when measureBeforeMount is enabled.
containerRefAttach to the element you want to measure.
measureWidthTrigger a manual measurement.