Code Monkey home page Code Monkey logo

cheatmodes4globalcontextstatemanager's Introduction

CheatModes4 Global Context State Manager

This library is based on a hook that Jack Herrington has published on his YouTube channel

Making React Context FAST! Github Repository

That is the starting point, which I have been extending its functionality to take advantage of all the power of React, the idea is to simplify the code to eliminate the Drilling prop and the complexity and code base of some libraries to handle global states, it also solves React Context and useState Hell.

Context Hell useState Hell

To install it

To install the library, use the following command:

npm i cheatmodes4

Use

Import and Configure First, import the necessary functions from cheatmodes4:

import { CombineProviders, CreateFastContext } from 'cheatmodes4';

Define the Initial State

Define the initial state of your application. You can use interfaces or types depending on your needs.

example

const initialState = {
  foo: 'bar',
  CheatMode: 'CheatModes4',
  count: 0,
  array: null as number[] | null,
  // otros campos que necesites
};

Create the Global Context

Use CreateFastContext to define the global context and destructure the providers, getters, and setters.

export const {
  Provider: InitialStateProvider,
  useContextSignals,
  useStore,
} = CreateFastContext(initialState);

Combine Providers

If you have multiple contexts, combine them using CombineProviders.

const providers = [
  InitialStateProvider
];

export const CheatModes4GlobalContextStateManager = CombineProviders(...providers);
CheatModes4GlobalContextStateManager.displayName = 'AppGlobalContextProvider';

Provide Context to the Application

Finally, pass the provider to your application or component that needs to consume the context information.

  <CheatModes4GlobalContextStateManager>
    <App />
    <Component />
  </CheatModes4GlobalContextStateManager>

Complete usage example

Now to use the context information we have several ways to use it This is a code base created with the Vite.ts packager but I have cleaned it and left the ways to read and set the context state properties.

import { useContextSignals, useStore } from './mainContext'

export default function App () {
  const [ foo, set ] = useStore(s /* store */ => s.foo)
  const { CheatMode } = useContextSignals()

  return <>
    <a
      onClick={() => CheatMode.set('s4')}
    >
      <img src={viteLogo} className='logo' />
    </a>

    <a
      onClick={() => set({ foo: 'hello' })}
    >
      <img src={reactLogo} className='logo react' />
    </a>

    <h1>CheatMode<i>{CheatMode.get}</i></h1>

    <h2>foo: {foo}</h2>

    <div className='card'>
      <Counter />

      <button onClick={() => set(s => ({ count: s.count - 1 }))} >Decrese</button>
    </div>
  </>
}

export function Counter () {
  const { count } = useContextSignals()
  // const [ count, set ] = useContextFields(s => s.count) // another example

  return <>
    <button onClick={() => count.set(count.get + 1)} >
      Increase
    </button>

    <p>count is {count.get}</p>
  </>
}

Has all the power of typescript to detect properties and infer types typescript inference autocomplete auto

Also the useState callback to update the state according to its previous properties types

Now you're ready to make beautiful React code free of common bad practices.

If this project has served you and liked it, and if you want to support financially to continue developing it, contact me [email protected]

cheatmodes4globalcontextstatemanager's People

Contributors

mrshortcut avatar

Stargazers

RodrigoMoreno avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.