1.0.4 • Published 6 years ago

react-track-observable v1.0.4

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

react-track-observable

Tiny utility to render ECMAScript observable in React:

import { track } from 'react-track-observable';

// assume we have observable
{track.call(observable, value => (
    <strong>{value}</strong>
))}
// ... or using proposed bind operator
{observable::track(value => (
    <strong>{value}</strong>
))}

Being called with this binded to observable you want to track, track returns React component that literally track observable:

  • subscribes on component creation
  • unsubcribe on component disposal
  • re-renders component when new value comes from the observable

Full example

import * as React from 'react';
import { render } from 'react-dom';
// This example uses Observable implementation from RxJs.
// However, library does not provide any observable implementation itself.
import { Observable } from 'rxjs/Rx';

import { track } from 'react-track-observable';

// here is the observable we would render
const observable = new Observable(observer => {
    observer.next('hello');
    setTimeout(() => observer.next('world'), 1000);
})

const App = () => (
    <div>
        <span>Rendering: </span>
        {track.call(observable, value => (
            <strong>{value}</strong>
        ))}
    </div>
);

render(<App />, document.querySelector('body'));

Installation

npm i --save react-track-observable

API

track(renderFn)

track is expected to be called with this binded to ECMAScript Observable you want to track. There are few implementations, and track will work with any of them as long as they follow the specification. As with any function in js, you can use call method of track function to invoke it with this binding of your choice.

Arguments

  • renderFn: (nextValue) => React.Element function responsible for rendering values coming from observable.

Bind operator

Using proposed JavaScript bind operator you can directly call track on your observable.

There is Babel transform for bind operator.

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago