storetex
TypeScript icon, indicating that this package has built-in type declarations

0.2.2 • Public • Published

Storetex

Note: this library is early in development and not suitable for production use.

Extremely simple state management for React, compatible with hooks.

npm version Build Status


Usage

Create a Store Provider:

import { createStore } from 'storetex';

const StoreProvider = createStore({ first: 1, second: 2 });

Wrap your App in the Provider:

render(
    <StoreProvider logging={true}>
        <App />
    </StoreProvider>,
    document.getElementById("root")
);

And then access the store anywhere in your app, using a hook:

import { useStore } from 'storetex';

const App = () => {
    // Get/set single values in the store
    const [first, setFirst] = useStore('first');

    // Or get/set the whole store in one go
    const [store, setStore] = useStore();

    return (
        <div>
            <p>My first value: {first}</p>
            <button onClick={() => setFirst(first + 1)}>
                Increment first
            </button>
        </div>
    )
}

Or using a Higher-Order Component:

import { withStore } from 'storetex';

const App = withStore(({ store, setStore}) => (
    <div>
        <p>My first value: {store.first}</p>
        <button onClick={() => setStore({ first: store.first + 1 })}>
            Increment first
        </button>
    </div>
));

Type Safety

Stortex will not insert a value into the store if it is either the wrong type or the key did not previously exist. For instance, if you have:

const StoreContext = createStore({ str: 'value', num: 10 });

Then the following will fail:

// Wrong type
setStore({ str: 567 });
setStore({ num: '10' });

// Doesn't exist
setStore({ what: 'who' });

Validation happens on a key-by-key basis, so other values passed in will still be updated if they are okay.

Since null is considered to be an object in Javascript, only set an initial value to null if you want that key to be an object in the future, not a literal.

Readme

Keywords

none

Package Sidebar

Install

npm i storetex

Weekly Downloads

2

Version

0.2.2

License

ISC

Unpacked Size

22.7 kB

Total Files

8

Last publish

Collaborators

  • gregoryjjb