Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Example for using Reactive extensions for Javascript with React.js">
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.0.6/rx.all.js"></script>
<script src="https://fb.me/react-15.1.0.min.js"></script>
<script src="https://fb.me/react-dom-15.1.0.min.js"></script>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>Reactive react.js example</title>
</head>
<body>
  <div id="app"></div>
  
</body>
</html>
 
const cities = [
  'London',
  'Madrid',
  'Brussels',
  'Praha',
  'Berlin',
  'Marseille',
  'Bukarest'
]
const subject = new Rx.Subject()
const onChange = e => subject.onNext(e.target.value)
const citiesStream = Rx.Observable.combineLatest(
  Rx.Observable.return(cities),
  subject.debounce(1500).startWith(''),
  (cities, i) => cities.filter(city => city.match(new RegExp(i, 'i')))
)
.do(console.log)
const Cities = React.createClass({
  render: function() {
    return (
      <div>
        <input type="text" onChange={onChange} />
        <ul>
        {this.props.cities.map(city =>
           <li key={city}>{city}</li>)}
        </ul>
      </div>
    )
  }
})
citiesStream.subscribe(cities => 
  ReactDOM.render(
    <Cities cities={cities} />,
    document.querySelector('#app')
  )
)
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
jhohlfeldpro
0viewers