All Projects β†’ alhaqhassan β†’ jedisdb

alhaqhassan / jedisdb

Licence: other
redis like key-value state management solution for React

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to jedisdb

react-cool-form
😎 πŸ“‹ React hooks for forms state and validation, less code more performant.
Stars: ✭ 246 (+1792.31%)
Mutual labels:  hooks, state-management, state, react-hooks
atomic-state
A decentralized state management library for React
Stars: ✭ 54 (+315.38%)
Mutual labels:  hooks, state-management, state, react-hooks
eventrix
Open-source, Predictable, Scaling JavaScript library for state managing and centralizing application global state. State manage system for react apps.
Stars: ✭ 35 (+169.23%)
Mutual labels:  hooks, state-management, state
Constate
React Context + State
Stars: ✭ 3,519 (+26969.23%)
Mutual labels:  hooks, state-management, react-hooks
concave
🧐 Lens-like state management (for React).
Stars: ✭ 13 (+0%)
Mutual labels:  state-management, state, react-hooks
useSharedState
useSharedState is a simple hook that can be used to share state between multiple React components.
Stars: ✭ 0 (-100%)
Mutual labels:  hooks, state-management, state
Easy Peasy
Vegetarian friendly state for React
Stars: ✭ 4,525 (+34707.69%)
Mutual labels:  hooks, state-management, react-hooks
resynced
An experimental hook that lets you have multiple components using multiple synced states using no context provider
Stars: ✭ 19 (+46.15%)
Mutual labels:  hooks, state-management, react-hooks
Pure Store
A tiny immutable store with type safety.
Stars: ✭ 133 (+923.08%)
Mutual labels:  hooks, state-management, state
Use Global Context
A new way to use β€œuseContext” better
Stars: ✭ 34 (+161.54%)
Mutual labels:  hooks, state-management, state
Pullstate
Simple state stores using immer and React hooks - re-use parts of your state by pulling it anywhere you like!
Stars: ✭ 683 (+5153.85%)
Mutual labels:  hooks, state-management, state
use-app-state
🌏 useAppState() hook. that global version of setState() built on Context.
Stars: ✭ 65 (+400%)
Mutual labels:  hooks, state-management, react-hooks
rex-state
Convert hooks into shared states between React components
Stars: ✭ 32 (+146.15%)
Mutual labels:  state-management, state, react-hooks
use-query-string
πŸ†™ A React hook that serializes state into the URL query string
Stars: ✭ 50 (+284.62%)
Mutual labels:  hooks, state-management, react-hooks
agile
🌌 Global State and Logic Library for JavaScript/Typescript applications
Stars: ✭ 90 (+592.31%)
Mutual labels:  state-management, state
stook
A minimalist design state management library for React.
Stars: ✭ 86 (+561.54%)
Mutual labels:  hooks, state-management
use-state-machine
Use Finite State Machines with React Hooks
Stars: ✭ 28 (+115.38%)
Mutual labels:  state-management, react-hooks
tstate-machine
TypeScript implementation of State Manager(like StateMachine)
Stars: ✭ 20 (+53.85%)
Mutual labels:  state-management, state
react-breakpoints
Respond to changes in a DOM element's size. With React Breakpoints, element queries are no longer "web design's unicorn" πŸ¦„
Stars: ✭ 74 (+469.23%)
Mutual labels:  hooks, react-hooks
mutable
State containers with dirty checking and more
Stars: ✭ 32 (+146.15%)
Mutual labels:  state-management, state

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].