Skip to content

iamogbz/react-mirror

Folders and files

NameName
Last commit message
Last commit date
Nov 30, 2024
Jul 10, 2021
Mar 20, 2020
Nov 30, 2024
Dec 7, 2024
Nov 30, 2024
Mar 20, 2020
Mar 20, 2020
Jul 4, 2023
Feb 10, 2022
Nov 30, 2024
May 7, 2022
Mar 20, 2020
Jul 4, 2023
Mar 20, 2020
Nov 30, 2024
Nov 30, 2024
Feb 28, 2025
Apr 4, 2025
May 7, 2022
Jul 10, 2021
Nov 12, 2022

Repository files navigation

React Mirror

⚛️

NPM badge Dependabot badge Dependencies Build Status Coverage Status

Create synchronized replicas of a React DOM element

Suggested alternative for non react usage mirror-element

Usage

See equivalent uses of the hook and component below.

useMirror hook

import { useMirror } from 'react-mirror';

function App() {
  const [ref, mirror] = useMirror({ className: 'mirror-frame' });
  return (
    <>
      <div ref={ref} />
      {mirror}
    </>
  );
}

<Mirror /> component

import React from 'react';
import { Mirror } from 'react-mirror';

function App() {
  const [reflect, setReflect] = React.useState(null);
  return (
    <>
      <div ref={setReflect} />
      <Mirror reflect={reflect} className='mirror-frame' />
    </>
  );
}

<Window /> component

You can also render a reflection, with all the styles needed, in a separate window using the magic of Portals 🌀

import React from 'react';
import { FrameStyles, Reflection, Window } from 'react-mirror';

function App() {
  const [reflect, setReflect] = React.useState(null);
  return (
    <>
      <div ref={setReflect} />
      <Window>
        <FrameStyles />
        <Reflection real={reflect} style={{ pointerEvents: "none" }} />
      </Window>
    </>
  );
}

Demos

Using Portals

Alternatives