Export Image
Export Code

React & D3 Starter

Curran Kelleher

0 views in last 90 days
Last edited Oct 10, 2025
Created on Oct 10, 2025
Forked from React Starter

React and D3 Integration Example

This project demonstrates a basic pattern for integrating the D3.js library with a React application. React is used for managing the component lifecycle and rendering the initial DOM structure, while D3 is used to perform imperative manipulations on a specific DOM element.

How it Works

The integration follows these steps:

  1. React Renders the Component: The App component renders a single <div> element into the DOM.
  2. Get a DOM Reference: The useRef hook is attached to this <div>. This provides a direct, stable reference to the underlying DOM node once it's rendered.
  3. Run D3 after Render: A useEffect hook with an empty dependency array ([]) is used. This ensures its callback function runs only once, immediately after the component has been mounted to the DOM.
  4. D3 Manipulates the DOM: Inside the useEffect callback, D3's select() function targets the DOM node provided by the ref (ref.current). D3 then manipulates this element by setting its text content with the .text() method.

This approach leverages the strengths of both libraries: React manages the overall component structure and lifecycle, while D3 is given control over a specific part of the DOM to perform complex or specialized manipulations, which is common for data visualizations.

APIs in Use

React

  • createRoot(element) (from react-dom/client): Creates a React root for the provided DOM container, enabling React's concurrent rendering features. This is the modern entry point for a React application.
  • root.render(component): Renders a React element (e.g., <App />) into the created root.
  • useRef(): A hook that returns a mutable ref object. Its .current property is used here to get a direct reference to the <div> DOM element rendered by the component. This reference persists across re-renders.
  • useEffect(callback, dependencies): A hook for running side effects in function components. By using it with an empty dependency array [], the callback function is executed only once, after the initial render. This makes it the ideal place to integrate with third-party libraries like D3 that need to access the DOM.

D3

  • select(node): The core function of D3's selection module. It selects a single DOM element. In this project, it takes the DOM node from ref.current and wraps it in a D3 selection object, which can then be manipulated by other D3 methods.
  • .text(value): A method on a D3 selection that sets the text content of the selected element(s). Here, it sets the text of the <div> to "hello D3 and react".
MIT Licensed