1.0.2 • Published 9 months ago

react-smart-state v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

react-smart-state

Next generation local and global state management

react-smart-state makes your state management much simple to handle.

I have looked at state management libraries like redux, atom etc and each of them takes to much code/work to create and manage, this is why I built this library.

This library also able to handle working in devoloped mode. no need to reload the application each time you change your code.

NPM JavaScript Style Guide

Install

npm install react-smart-state

if you are installing this in react-native you will need to also install

npm install react-native-get-random-values
import 'react-native-get-random-values' at the root

Usage

Local State

import buildState from 'react-smart-state';

const Counter = () => {
  const state = buildState({
        itemA: 0,
        item: { a: 0 },
        test: new StateItem()
}).ignore("item").bind("item.a").build();
      
  state.useEffect(() => {
    
   // console.error(state);
  }, "itemA", "item.a")
  //alert(state.item.a)
  return (
    <div>
      <label>{state.itemA} && {state.item.a} && {state.test.name} </label>
      <button onClick={() => {
        state.itemA++;
        state.item.a++;
      }}>increase</button>
    </div>
  )
}

GlobalState

import buildState from 'react-smart-state';

const state = buildState({
        itemA: 0,
        item: { a: 0 },
        test: new StateItem()
}).ignore("item").globalBuild();
const Counter = () => {
  // for all items change except ignored items
  state.hook();
  // or specify items
  state.hook("itemA","item.a");
  state.useEffect(() => {
    
   // console.error(state);
  }, "itemA", "item.a")
  //alert(state.item.a)
  return (
    <div>
      <label>{state.itemA} && {state.item.a} && {state.test.name} </label>
      <button onClick={() => {
        state.itemA++;
        state.item.a++;
      }}>increase</button>
    </div>
  )
}

BuildState Methods

NameDescriptions
ignoreIgnore props from proxy this is usefull when you have a big or recrusive items, those could be ignored as it may slow down the application, you will still get notified when setting it but it will ignore its probs.
bindbind prop in ignored object
buildbuild the local state
globalBuildbuild the global state
timeoutdisable settimeout by giving undefined value or specify a number in ms default is 2 ms

State additional props

NameDescriptions
bindbind prop in ignored object
hookused to hook changes to a specific component
useEffectget notify of a change

License

MIT

1.0.2

9 months ago

1.0.1

10 months ago

1.0.0

10 months ago