/react-area

Primary LanguageTypeScriptMIT LicenseMIT

React Area

NOTE: For now, this is an experimental Proof of Concept.

Install

npm install react-area

Getting Started

First, wrap your app in the <AreaProvider /> component:

import { AreaProvider } from 'react-area';
import ReactDOM from 'react-dom';
import React from 'react';

ReactDOM.render(
  <AreaProvider>
    <YourApp />
  </AreaProvider>,
  document.getElementById('root'),
);

Next, anywhere in your app you can define an "render area" with a <RenderArea /> component:

import { RenderArea } from 'react-area';
import React from 'react';

function Layout() {
  return (
    <div>
      <aside>
        <RenderArea name="navigation" />
      </aside>
      <main>
        <RenderArea name="main" />
      </main>
    </div>
  );
}

And then, from any other component you can render inside those areas by using the <Content /> component:

import { Content } from 'react-area';
import React from 'react';

function SomeFeature() {
  return (
    <>
      <Content name="navigation">
        <a href="/some-feature">SomeFeature</a>
      </Content>

      <Content name="main">
        <div>Feature Content</div>
      </Content>
    </>
  );
}

Prior Art

This project is heavily inspired by these projects: