All Projects → leocavalcante → ReduRx

leocavalcante / ReduRx

Licence: BSD-3-Clause license
👌 A thin layer of a Redux-based state manager on top of RxDart

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to ReduRx

react-declarative
A React form builder which interacts with a JSON endpoint to generate nested 12-column grids with input fields and automatic state management in a declarative style. Endpoint is typed by TypeScript guards (IntelliSense available). This tool is based on material-ui components, so your application will look beautiful on any device...
Stars: ✭ 17 (-58.54%)
Mutual labels:  state-management
aurelia-hoc-store
An Aurelia application showing the use of higher order components and a single state approach.
Stars: ✭ 20 (-51.22%)
Mutual labels:  state-management
stook
A minimalist design state management library for React.
Stars: ✭ 86 (+109.76%)
Mutual labels:  state-management
solid-zustand
🐻 State management in Solid using zustand.
Stars: ✭ 44 (+7.32%)
Mutual labels:  state-management
concave
🧐 Lens-like state management (for React).
Stars: ✭ 13 (-68.29%)
Mutual labels:  state-management
store keeper
StoreKeeper is an easy and flexible state management system for Flutter apps
Stars: ✭ 22 (-46.34%)
Mutual labels:  state-management
hooksy
Simple app state management based on react hooks
Stars: ✭ 58 (+41.46%)
Mutual labels:  state-management
incubator-eventmesh
EventMesh is a dynamic event-driven application runtime used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.
Stars: ✭ 939 (+2190.24%)
Mutual labels:  state-management
UseCases
This a library that offers a generic implementation of the data layers from the clean architecture by Uncle bob.
Stars: ✭ 23 (-43.9%)
Mutual labels:  state-management
react-zeno
The React companion to Zeno, a Redux implementation optimized for Typescript.
Stars: ✭ 14 (-65.85%)
Mutual labels:  state-management
vue-unstated
A tiny state management library for Vue Composition API.
Stars: ✭ 30 (-26.83%)
Mutual labels:  state-management
use-app-state
🌏 useAppState() hook. that global version of setState() built on Context.
Stars: ✭ 65 (+58.54%)
Mutual labels:  state-management
vuex-module-generator
abdullah.github.io/vuex-module-generator
Stars: ✭ 89 (+117.07%)
Mutual labels:  state-management
react-evoke
Straightforward action-driven state management for straightforward apps built with Suspense
Stars: ✭ 15 (-63.41%)
Mutual labels:  state-management
Airstream
State propagation and event streams with mandatory ownership and no glitches
Stars: ✭ 160 (+290.24%)
Mutual labels:  state-management
vue
Vue integration for Nano Stores, a tiny state manager with many atomic tree-shakable stores
Stars: ✭ 25 (-39.02%)
Mutual labels:  state-management
use-query-string
🆙 A React hook that serializes state into the URL query string
Stars: ✭ 50 (+21.95%)
Mutual labels:  state-management
jedisdb
redis like key-value state management solution for React
Stars: ✭ 13 (-68.29%)
Mutual labels:  state-management
teaful
🍵 Tiny, easy and powerful React state management
Stars: ✭ 638 (+1456.1%)
Mutual labels:  state-management
reactube-client
A clone Youtube Web Player using React Provider Pattern, React Context and Typescript
Stars: ✭ 92 (+124.39%)
Mutual labels:  state-management

Please, check out: https://github.com/leocavalcante/observable_state

ReduRx Build Status

👌 A thin layer of a Redux-based state manager on top of RxDart.

Flutter bindingsReact bindings

Getting started

Usage

import 'dart:async';
import 'package:redurx/redurx.dart';

class State {
  State(this.count);
  final int count;

  @override
  String toString() => count.toString();
}

class Increment extends Action<State> {
  Increment([this.by = 1]);
  final int by;
  State reduce(State state) => State(state.count + by);
}

class AsyncIncrement extends AsyncAction<State> {
  @override
  Future<Computation<State>> reduce(State state) async {
    int result = await doAsyncTask();
    return (State state) =>
      State(count: state.count + result);
    }
  }
}

void main() {
  final store = Store<State>(State(0));

  store.add(LogMiddleware<State>());
  print(store.state.count); // 0

  store.dispatch(Increment());
  // Before action: Increment: 0 (from LogMiddleware)
  // After action: Increment: 1 (from LogMiddleware)
  print(store.state.count); // 1

  store.dispatch(Increment(2));
  // Before action: Increment: 1 (from LogMiddleware)
  // After action: Increment: 3 (from LogMiddleware)
  print(store.state.count); // 3
}

Just give it a try. Feel free to open Issues and PRs!

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].