1.0.1 • Published 8 years ago

react-announce-connect v1.0.1

Weekly downloads
2
License
ISC
Repository
github
Last release
8 years ago

react-announce-connect

Build Status npm

A react-announce declarative that applies an observable onto the component state.

Install

npm i react-announce-connect --save

Timer example

The following example will display the time and get updated every 100ms.

import {connect} from 'react-announce-connect'
import {Observable} from 'rx'
import {Component} from 'react'

const time = Observable.interval(100).map(() => new Date())

@connect({time})
class Timer extends Component {

  render () {
    return (
      <div>{this.state.time}</div>
    )
  }
}

Responsive font-size example

Creating responsive Layouts. This will auto select the font-size based on the screen size.

import {connect} from 'react-announce-connect'
import {Observable} from 'rx'
import {Component} from 'react'

const windowEvents = Observable.fromCallback(window.addEventListner)
const _screen = windowEvents('resize')
  .debounce(300)
  .pluck('target', 'innerWidth')
  .map(x => {
    if(x < 768){ return 'xs' }
    if(x < 992){ return 'sm' }
    if(x < 1200){ return 'md' }
    return 'lg'
  })

/*
You can create a new reusable decorator for screen size
*/
const screen =  connect({screen: _screen})


@screen
class Heading extends Component {
  render () {
    const style = {fontSize: {xs: 10, sm: 12, md: 14, lg: 18}[this.state.screen]}
    return (
      <div style={style}>Hello World!</div>
    )
  }
}

A reusable screen decorator can be created from the connect decorator.

Connection to multiple streams

The connect declarative can connect to multiple stream as follows —

@connect({key1: stream1, key2: stream2})
class MyComponent extends React {
  ...
}

Whenever either of the streams viz — stream1 or stream2, emit a value, it would be applied to the state property key1 and key2 respectively.

Performance

The @connect declarative, optimizes internally so that the state doesn't get updated unless there is an actual change in the value. For instance, if a stream keeps emiting the same value again and again, unless the value changes, the state will not be updated.

1.0.1

8 years ago

1.0.0

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.8

8 years ago

0.0.7

8 years ago

0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago

0.0.0

8 years ago