Skip to content

Instantly share code, notes, and snippets.

View namelos's full-sized avatar
💤
zzz

Yifan Wang namelos

💤
zzz
View GitHub Profile
const Immutable = require('immutable')
const Range = Immutable.Range
const fib = n => {
switch (n) {
case 0:
return 1;
case 1:
return 1;
default:
export const error = ComposedComponent =>
class extends Component {
state = { display: 0 }
toggle = display =>
this.setState({ display })
reset = () =>
this.toggle(0)
@namelos
namelos / error-hoc.js
Last active December 6, 2015 07:37
error handling higher order component & reducer
const mapState = ({ error }) => ({ error })
const mapDispatch = dispatch => bindActionCreators({ showErr, cancelErr }, dispatch)
@connect(mapState, mapDispatch)
export const error = ComposedComponent =>
class extends Component {
render = () => <div>
<ComposedComponent { ...this.props }
showErr={ this.props.showErr }
cancelErr={ this.props.cancelErr } />
@namelos
namelos / cycle.js
Last active December 29, 2015 11:29
import Rx from 'rx'
import Cycle from '@cycle/core'
import {h, div, input, h2, makeDOMDriver} from '@cycle/dom'
/* utils */
const renderWeightSlider = weight => div([
`Weight${weight}kg`,
input('#weight', {type: 'range', min: 40, max: 140, value: weight})])
const renderHeightSlider = height => div([
@namelos
namelos / recursive-rendering.js
Created February 16, 2016 05:49
react recursive rendering
import React from 'react'
const Node = ({ data }) => {
if (data instanceof Array)
return <ol>{ data.map(i => <Node data={ data[i - 1] } key={ i } />) }</ol>
else if (data instanceof Object)
return <ul>{ Object.keys(data).map(i =><Node data={ data[i] } key={ i } />) }</ul>
else
return <li>{ data }</li>
}
@namelos
namelos / counter.js
Last active March 6, 2016 05:55
rx.js snippets
import { Observable } from 'rx'
const { fromEvent } = Observable
const $app = document.querySelector('#app')
$app.innerText = 'app'
const one = () => 1
const sum = (x, y) => x + y
fromEvent($app, 'click')
@namelos
namelos / cycle-bmi-mvi.js
Last active March 6, 2016 16:37
cycle bmi calculator example
import { Observable } from 'rx'
import { run } from '@cycle/core'
import { makeDOMDriver, hJSX } from '@cycle/dom'
import { makeHTTPDriver } from '@cycle/http'
const { of, just, combineLatest } = Observable
const square = x => x * x
const bmi = (weight, height) =>
Math.round(weight / square(height * 0.01))
import { run } from '@cycle/core'
import { makeDOMDriver, hJSX } from '@cycle/dom'
import { makeHTTPDriver } from '@cycle/http'
import isolate from '@cycle/isolate'
import { Observable } from 'rx'
const { of, combineLatest } = Observable
const LabeledSlider = ({ DOM, props$ }) => {
const initialValue$ = props$.map(({ initial }) => initial).first()
const makeReactDriver = query =>
reactElement$ =>
reactElement$.subscribe(reactElement =>
render(reactElement, document.querySelector(query)))
const main = ({ react }) => {
return {
react: of(<h2>hello</h2>)
}
}
import { Observable, Subject } from 'rx'
const { timer, fromEvent } = Observable
/* --- logic --- */
const main = DOM =>
DOM.startWith(null)
.flatMapLatest(
() => timer(0, 100).map(
i => `seconds elapsed ${i}`))