0.1.1 • Published 5 years ago

react-bind-store v0.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

react-bind-store

npm package

A simple shared store for react.

Installation

$ npm install --save react-bind-store

Usage

These two component shares the store piece named 'my-store', and any call to setState will re-render both components.

import React from 'react';
import {bindStore, getStore, unbindStore} from 'react-bind-store';

class MyComponent extends React.Component {
    componentWillMount () {
        bindStore('my-store', this, {value: 0});
    }

    componentWillUnmount () {
        unbindStore('my-store', this);
    }
    
    render() {
        const [state, setState] = getStore('default');
        // use state and setState like this.state and this.setState
        return <div>{state}</div>;
    }
}

class MyComponent2 extends React.Component {
    componentWillMount () {
        bindStore('my-store', this, {value: 0});
    }

    componentWillUnmount () {
        unbindStore('my-store', this);
    }
    
    render() {
        const [state, setState] = getStore('default');
        // use state and setState like this.state and this.setState
        return <div>{state}</div>;
    }
}

API

bindStore(storeName, component[, defaultState])

Bind the component to a store; if the store does not exist, a new store will be created. Should be called in componentWillMount();

storeName: the unique name (key) of a store.

component: a reference to the component to be bound to the store. Normally it should be this.

defaultState (optional): the initial state of store.

unbindStore(storeName, component)

Unbind the component from a store. Should be called in componentWillUnmount().

getStore(storeName)

Returns a [state, setState] pair used for accessing the store data. Should be used just like the built-in this.state and this.setState(). Calling setState will trigger re-rendering.