All Projects → cif → redux-fusion

cif / redux-fusion

Licence: other
React bindings for RxJS and Redux

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to redux-fusion

firebase-ignite
Firebase PWA Boilerplate
Stars: ✭ 12 (-58.62%)
Mutual labels:  rxjs, recompose
app
Source code of intencje.pl website and mobile/desktop apps based on Angular, Firebase, and Capacitor.
Stars: ✭ 12 (-58.62%)
Mutual labels:  rxjs
rxjs-proxify
Turns a Stream of Objects into an Object of Streams
Stars: ✭ 34 (+17.24%)
Mutual labels:  rxjs
websynth
Web Synthesizer From Space
Stars: ✭ 16 (-44.83%)
Mutual labels:  rxjs
vue-next-rx
RxJS integration for Vue next
Stars: ✭ 31 (+6.9%)
Mutual labels:  rxjs
nestjs-rest-sample
NestJS RESTful APIs Sample
Stars: ✭ 204 (+603.45%)
Mutual labels:  rxjs
Angular-Reactive-Demo-Shop
Angular Demo Shop
Stars: ✭ 79 (+172.41%)
Mutual labels:  rxjs
angular-advanced-course
Angular Advanced Library Laboratory Course - Build Your Own Library
Stars: ✭ 82 (+182.76%)
Mutual labels:  rxjs
flow-state
UI state management with RxJS.
Stars: ✭ 33 (+13.79%)
Mutual labels:  rxjs
arcomage-hd
Web-based, free and open source, remastered 3D clone of 3DO/NWC's 2000 card game Arcomage. 13 languages. Desktop or mobile Android iOS. Online or offline PWA. Against AI or Multiplayer (w/o server). 🧝👾🃏 (ts+react+redux+rxjs, CSS-based anim, WebRTC)
Stars: ✭ 55 (+89.66%)
Mutual labels:  rxjs
ngx-log-monitor
NGX Log Monitor - Log Monitoring Component for Angular
Stars: ✭ 33 (+13.79%)
Mutual labels:  rxjs
data-flow
frontend data flow explored in React
Stars: ✭ 19 (-34.48%)
Mutual labels:  rxjs
clock-in-out
A clock-in/out system using nestJS, PostgreSQL, TypeORM, Angular, Arduino, RxJS
Stars: ✭ 61 (+110.34%)
Mutual labels:  rxjs
angular-infinite-scroller
No description or website provided.
Stars: ✭ 45 (+55.17%)
Mutual labels:  rxjs
mutoid
Reactive library for data fetching, caching, state management
Stars: ✭ 24 (-17.24%)
Mutual labels:  rxjs
from-event
🦊 ViewChild and FromEvent — a Match Made in Angular Heaven
Stars: ✭ 130 (+348.28%)
Mutual labels:  rxjs
monogram
Aspect-oriented layer on top of the MongoDB Node.js driver
Stars: ✭ 76 (+162.07%)
Mutual labels:  rxjs
nextjs-redux-instagram
🌏 The simple Instagram was written by next.js & redux-saga & recompose
Stars: ✭ 48 (+65.52%)
Mutual labels:  recompose
drawer
A touch-enabled drawer component for the modern web.
Stars: ✭ 26 (-10.34%)
Mutual labels:  rxjs
vue-mail-front
A front system base on vue.基于vue的邮件系统前端部分
Stars: ✭ 57 (+96.55%)
Mutual labels:  rxjs

redux-fusion

Build Status

Update Two Years Later

It's come to my attention this POC no longer works with current versions of React and Redux. This project unfortunately remained only simply to support the conceputal article written on Medium in April 2017. Fortunately, there are now other libraries using similar concepts, namely RefractJS. Happy observing!

What is this?

This module is a higher order component that serves as an alternative to react-redux connect. There is no additional buy in, all of your redux modules and containers can remain as-is. You could even wrap an existing connected component with fuse() if desired.

How it works

Redux createStore is observable so it is straight forward to access store from root <Provider> context, convert to a state$ observable and subscribe the wrapped component's props via mapPropsStream(). See recompose's Observable utilities for more details.

The end result is developer ability to use bi-directional reactive programming to combine state and UI streams:

Usage Example

import React from 'react'
import { createEventHandler } from 'recompose'
import fuse from 'redux-fusion'
import { someReduxAction } from '../redux/actions'

const hello$ = (state$, dispatch) => (props$) => {
  const {
     handler: handleClick,
     stream: click$
  } = createEventHandler()

  click$
    .debounceTime(300)
    .subscribe(() => dispatch(someReduxAction()))

  const hello$ = state$
    .pluck('hello')
    .map(val => `Hello ${val}`)

  return props$.combineLatest(hello$, (props, hello) => ({
    hello,
    handleClick
  }))   
}

const Hello = ({ handleClick, hello }) =>
  (
    <div>
      <h3>{hello}</h3>
      <button onClick={handleClick}>Click Me</button>
    </div>
  )

const HelloWorld = fuse(hello$)(Hello)

Stay tuned for more real life examples!

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