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.

/storetex/

    Package Sidebar

    Install

    npm i storetex

    Weekly Downloads

    0

    Version

    0.2.2

    License

    ISC

    Unpacked Size

    22.7 kB

    Total Files

    8

    Last publish

    Collaborators

    • gregoryjjb