jedisdb

    0.3.3 • Public • Published

    jedisdb

    redis like key-value state management solution for React

    Reactive. Redux alternative. Simple and powerful global state management system, accessible through every component.

    Philosophy

    jedisdb is a wrapper for React.JS useState hook. jedisdb makes the hook accessible in every component without the need to explicity pass it down or to create stores, actions, and dispatchers.

    Features 📋

    1. Reactive
    2. State accessable through every components
    3. no reducer, no action needed
    4. small bundle size

    Basic Usage

    npm i jedisdb
    
    or
    
    yarn add jedisdb
    

    happy hacking

    import React from 'react'
    import useJedis from 'jedisdb'
    const Counter = () =>{
    /*
    if a key is not present in jedis, useJedis('myKey', fallbackValue) will create create that key in jedisdb and then it will return that jedis object,
    if key is present it will simply return that jedis object
    if we don't pass fallbackValue it will create jedis object with value undefined 
    */
      const counter = useJedis('counter', 0)
      return (
        <div>
          <h1>My counter</h1>
          {counter.state}
          <button onClick={()=>{ counter.state++ }}>+</button>
        </div>
      );
    }

    Demo:

    Counter Codesandbox.

    Shopping Cart Codesandbox.

    useJedis returns a react hook so it can only used in react functional components,

    selectState has no side effects, it can be used anywhere,
    createState creates jedis object without any side effects.
    demo: Accessing value in JS funciton Codesandbox.

    Best Practice

    use createState to create jedis object and then use useJedis to access it, is considered best practice

    //myGlobalHook.js
    //create jedis object
    import {createState} from 'jedisdb'
    createState({
        theme: 'dark',
        uesrLevel: 'admin',
        counter: 7
    })
    //app.js
    //import jedis object in app
    import React from 'react';
    import Main from './main';
    require('./myGlobalHook')
    function App() {
      return (
          <Main />
      );
    }
    export default App;
    //counter.js
    //access anywhere
    import React from 'react';
    import useJedis from "jedisdb";
    
    function Counter() {
      const counter = useJedis('counter') //no need to pass fallback value
      return (
          <>
            {counter.state}
            <button onClick={()=>{ counter.state++ }}>+</button>
          </>
      );
    }
    export default Counter;

    demo: Codesandbox


    🤝 Contributing

    Contributions, issues and feature requests are welcome! Feel free to check issues page.

    Install

    npm i jedisdb

    DownloadsWeekly Downloads

    28

    Version

    0.3.3

    License

    MIT

    Unpacked Size

    8.94 kB

    Total Files

    6

    Last publish

    Collaborators

    • alhaqhassan