Code Monkey home page Code Monkey logo

react-global-store-hook's Introduction

Overview

react-global-store-hook - global store based on react hooks

Installation

To install the stable version:

npm install --save react-global-store-hook

Quick example

import GlobalStore from 'react-global-store-hook';

const store = new GlobalStore({ count: 0 });

setInterval(() => {
  store.set('count', store.get('count') + 1);
}, 1000);

export function SecondsCounter() {
  const count = store.useSubscribe('count');
  return <div>{count}</div>;
}

const unsubscribe = store.subsctibe('count', (value) => console.log(value));

Documentation

GlobalStore(initialState: { [key: string]: any } = {})

import GlobalStore from 'react-global-store-hook';
const store = new GlobalStore();

Store constructor. Can be initialized with initial state.

GlobalStore methods

useSubscribe = (...paths: Array<string | string[]>): any | any[] | { prev: any, current: any }

React hook to subscribe for store updates in react functional components.

If no arguments passed, then subscribes to all changes and returns value in format { prev: any, current: any }.

If one argument passed returns single value in path = paths[0].

Otherwise return tuple of values in each path of paths

Example:

const store = new GlobalStore({ one: 1, two: { deep: 2 }, three: 3 });

export function Example() {
  const deepTwo = store.useSubscribe(['two', 'deep']);
  const [one, three] = store.useSubscribe('one', 'three');
  return (
    <div>
      <div>{deepTwo}</div> {/* 2 */}
      <div>{one}</div> {/* 1 */}
      <div>{three}</div> {/* 3 */}
    </div>
  );
}

subscribe = (path: string | string[], subscriber: (value: any) => void): Function

Subscribes subscriber for store value updates in path. Returns function to unsubscribe

set = (path: string | string[], value: any): void

Set new value in store path

get = (path: string | string[]): any

Get value in store path

keys(): string[]

Returns all store keys

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.