New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

react-easy-contexts

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-easy-contexts

A simple tool to add multiple React contexts easily.

0.5.0
latest
Source
npm
Version published
Weekly downloads
4
300%
Maintainers
1
Weekly downloads
 
Created
Source

react-easy-contexts ♒️

A simple tool to add multiple React contexts easily.

npm npm npm bundle size npm peer dependency version GitHub

Add

yarn add react-easy-contexts

# or

npm i react-easy-contexts

Use

// App.jsx
import { useState, useMemo } from 'react';
import create from 'react-easy-contexts';
import Main from './Main';

export const ctx = create({
  useX() {
    const [x1, setX1] = useState(0);
    const [x2, setX2] = useState(0);
    return useMemo(() => ({ x1, x2, setX1, setX2 }), [x1, x2]);
  },
  useY() {
    const [y1, setY1] = useState(0);
    const [y2, setY2] = useState(0);
    return useMemo(() => ({ y1, y2, setY1, setY2 }), [y1, y2]);
  },
  useZ() {
    const [z1, setZ1] = useState(0);
    const [z2, setZ2] = useState(0);
    return useMemo(() => ({ z1, z2, setZ1, setZ2 }), [z1, z2]);
  },
});

const App = () => {
  const Provider = ctx.useProvider();
  return (
    <Provider>
      <Main />
    </Provider>
  );
};

// Main.jsx
import { ctx } from './App';

const Main = () => {
  const { x1, x2 } = ctx.useX();
  const { y1, y2 } = ctx.useY();
  const { z1, z2 } = ctx.useZ();

  return (
    <div>
      {x1} {x2} {y1} {y2} {z1} {z2}
    </div>
  );
};

Without react-easy-contexts, equals to:

// App.jsx
import { useState, useContext, useMemo, createContext } from 'react';

const XContext = createContext({});
const YContext = createContext({});
const ZContext = createContext({});

export const useX = () => useContext(XContext);
export const useY = () => useContext(YContext);
export const useZ = () => useContext(ZContext);

const XProvider = ({ children }) => {
  const [x1, setX1] = useState(0);
  const [x2, setX2] = useState(0);
  const value = useMemo(() => ({ x1, x2, setX1, setX2 }), [x1, x2]);
  return <XContext.Provider value={value}>{children}</XContext.Provider>;
};
const YProvider = ({ children }) => {
  const [y1, setY1] = useState(0);
  const [y2, setY2] = useState(0);
  const value = useMemo(() => ({ y1, y2, setY1, setY2 }), [y1, y2]);
  return <YContext.Provider value={value}>{children}</YContext.Provider>;
};
const ZProvider = ({ children }) => {
  const [z1, setZ1] = useState(0);
  const [z2, setZ2] = useState(0);
  const value = useMemo(() => ({ z1, z2, setZ1, setZ2 }), [z1, z2]);
  return <ZContext.Provider value={value}>{children}</ZContext.Provider>;
};

const App = () => {
  return (
    <XProvider>
      <YProvider>
        <ZProvider>
          <Main />
        </ZProvider>
      </YProvider>
    </XProvider>
  );
};

// Main.jsx
import { useX, useY, useZ } from './App';

const Main = () => {
  const { x1, x2 } = useX();
  const { y1, y2 } = useY();
  const { z1, z2 } = useZ();

  return (
    <div>
      {x1} {x2} {y1} {y2} {z1} {z2}
    </div>
  );
};

Try

Edit react-easy-contexts

API

create

import create from 'react-easy-contexts';

const ctx = create({ useA() {}, useB() {}, useC() {} });
// don't use "useProvider" as key, it'll be overwritten.

License

MIT License © nanxiaobei

Keywords

react

FAQs

Package last updated on 11 Jul 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts