An open API service indexing awesome lists of open source software.

https://github.com/react-earth/react-happy-global-state

Easy to manage your global state, just like using the useState hook.
https://github.com/react-earth/react-happy-global-state

Last synced: 4 months ago
JSON representation

Easy to manage your global state, just like using the useState hook.

Awesome Lists containing this project

README

          

![title](media/repo-header.svg)


star
version
minzip
downloads
license

## Quick Features 🥳

- Manage your global state, just like using the useState hook.
- Built with typescript, provide type protection, code autocompletion, make your app robust.
- Less than 1kB size.

## How to use 📖

### Install package

```shell
npm install react-happy-global-state
```

### Create your store.ts

```tsx
import { createGlobalState } from 'react-happy-global-state';

// define you GlobalState type
type GlobalState = {
count: number;
};

// set your default global state
const DEFAULT_GLOBAL_STATE: GlobalState = {
count: 0,
};

export const { GlobalStateProvider, useGlobalState } = createGlobalState({
defaultState: DEFAULT_GLOBAL_STATE,
});
```

### Use GlobalStateProvider to wrap your App

```tsx
import React from 'react';
import { createRoot } from 'react-dom/client';
import { App } from './App';
import { GlobalStateProvider } from './store';

const container = document.getElementById('root');
const root = createRoot(container!);

root.render(

{/* use GlobalStateProvider wrap your App */}



,
);
```

### Use useGlobalState in your Component

```tsx
import React from 'react';
import { useGlobalState } from './store';

export const Counter = () => {
// use useGlobalState hook to get/set your global state
const [count, setCount] = useGlobalState('count');

return (


{count}


setCount(count + 1)}>Increment
setCount(count - 1)}>Decrement

);
};
```

Click [here](https://codesandbox.io/s/demo-5fvh56?file=/src/App.tsx) to try it by yourself.