Skip to main content

React Async

React Async provides a way for React components to subscribe for observable values.

Installation

React Async is packaged on npm:
 $ npm install react-async  

Basic usage

React Async provides a component decorator @Async which given a set of observable specifications wraps a regular React component and returns a new one which subscribes to observables and re-renders the component when new data arrives.
The basic example looks like:
 import React from 'react';  
 import Async from 'react-async';  
 import Rx from 'rx';  
 function defineXHRObservable(url) {  
  return {  
   id: url,  
   start() {  
    return Rx.fromPromise(fetch(url))  
   }  
  }  
 }  
 function MyComponentObservables(props) {  
  return {  
   user: defineXHRObservable(`/api/user?user${props.userID}`)  
  }  
 }  
 @Async(MyComponentObservables)  
 class MyComponent extends React.Component {  
  render() {  
   let {user} = this.props  
   ...  
  }  
 }  
The @Async decorator injects data from observables via props so in render() method of the user property will contain the data fetched via XHR.

Rendering async components on server with fetched async state

While React provides renderToString(element) function which can produce markup for a component, this function is synchronous. That means that it can't be used when you want to get markup from server populated with data.
React Async provides another version of renderToString(element) which is asynchronous and fetches all data defined in observable specifications before rendering a passed component tree.
First, you'd need to install fibers package from npm to use that function:
 $ npm install fibers  
Then use it like:
 import {renderToString} from 'react-async';  
 renderToString(  
  <Component />,  
  function(err, markup) {  
   // send markup to browser  
  })  
This way allows you to have asynchronous components arbitrary deep in the hierarchy.

Note: Special thanks to Andrey Popp

Contact Me - 8mayday@gmail.com

Disclaimer: The blog is created to share react components information to geek, curious ReactJS Developers.

Comments

Popular posts from this blog

Rx Visualizer - Animated playground for Rx Observables https://rxviz.com

Description RxViz simply visualizes a given Observable. Your JavaScript code will be evaluated, and, if the last expression is an Observable, a nice animated visualization will appear. You can also: Control the speed of the animation by modifying the Time window input. Copy the resulting SVG to include in your next Rx presentation. Share the visualization with your friends. Examples Basic interval Random error Higher order Observable Pause and resume How does it work? RxViz treats the evaluated Observable as a black box. We rely only on the fact that Observable emits values over time. RxViz doesn't rely on the internals of RxJS. This will allow us to visualize TC39 Observables in the future. Technically, we subscribe to the given Observable, and, once a value is observed, we simply add it to the visualization. It's that simple! How about higher order Observables? No different. Since a higher order Observable is simply an Observable whose values ...

React Autosuggest

Demo Check out the Homepage and the Codepen examples . Features WAI-ARIA compliant , with support for ARIA attributes and keyboard interactions Mobile friendly Plugs in nicely to Flux and Redux applications Full control over suggestions rendering Suggestions can be presented as plain list or multiple sections Suggestions can be retrieved asynchronously Highlight the first suggestion in the list if you wish Supports styling using CSS Modules , Radium , Aphrodite , JSS , and more You decide when to show suggestions (e.g. when user types 2 or more characters) Always render suggestions (useful for mobile and modals) Pass through arbitrary props to the input (e.g. placeholder, type, onChange , onBlur , or any other), or take full control on the rendering of the input (useful for integration with other libraries) Thoroughly tested Installation yarn add react-autosuggest or npm install react-autosuggest --save You can also use the standalone UMD bu...

react-overlays

Utilities for creating robust overlay components demos and docs at: https://react-bootstrap.github.io/react-overlays/ Install npm install --save react-overlays All of these utilities have been abstracted out of react-bootstrap in order to provide better access to the generic implementations of these commonly needed components. The included components are building blocks for creating more polished components. Everything is bring-your-own-styles, css or otherwise. If you are looking for more complete overlays, modals, or tooltips--something you can use right out of the box--check out react-bootstrap, which is (or soon will be) built on using these components. note: we are still in the process of abstracting out these components so the API's will probably change until we are sure that all of the bootstrap components can cleanly be implemented on top of them. Pre 1.0.0 breaking changes happen on the minor bump while feature and patches accompany a patch bump. Note: Spec...