Skip to content

Make a nested tree of React components out of a flat array

License

Notifications You must be signed in to change notification settings

alexkorep/react-array-to-tree

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-array-to-tree

Make a nested tree of React components out of a flat array

Installation

npm i react-array-to-tree or yarn add react-array-to-tree

Usage

If you have a React application with multiple contexts you might end up with a deep nested tree of context providers, something like this:

const AppWithProviders = () => (
  <ThemeContext.Provider param1={value1}>
    <UserContext.Provider>
      <SomeOtherContext.Provider param2={value2} param3={value3}>
        <YetAnotherContext.Provider>
          <OneMoreContext.Provider>
            <AndOneMoreContext.Provider>
              <AndSoOnContext.Provider>
                <AndSoForthContext.Provider>
                  <App/>
                <AndSoForthContext.Provider>
              </AndSoOnContext.Provider>
            </AndOneMoreContext.Provider>
          </OneMoreContext.Provider>
        </YetAnotherContext.Provider>
      </YetAnotherContext.Provider>
    </UserContext.Provider>
  </ThemeContext.Provider>
)

To make the structure more flat you can use this library:

import reactArrayToTree from 'react-array-to-tree';

const Provider = reactArrayToTree([
  <ThemeContext.Provider param1={value1} />,
  <UserContext.Provider />
  <SomeOtherContext.Provider param2={value2} param3={value3} />,
  <YetAnotherContext.Provider />,
  <OneMoreContext.Provider />,
  <AndOneMoreContext.Provider />,
  <AndSoOnContext.Provider />,
  <AndSoForthContext.Provider />,
]);

const AppWithProviders = () => (
  <Provider>
    <App/>
  </Provider>
);

About

Make a nested tree of React components out of a flat array

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •