Skip to content

Instantly share code, notes, and snippets.

@taras
Forked from cowboyd/react-event-pipeline.jsx
Created August 6, 2018 17:18
Show Gist options
  • Save taras/52c197b5726505b69cb4d35b37ed0518 to your computer and use it in GitHub Desktop.
Save taras/52c197b5726505b69cb4d35b37ed0518 to your computer and use it in GitHub Desktop.
Hypothetical React Event Pipeline
import { pipe as $, string, preventDefault, blockOn } from 'react-event-pipeline'
function onSubmit(form) {
return $(preventDefault, blockOn(() => form.isSubmittable), onSave(form.serialized));
}
export default function Settings({ flares, knotsPerFlare, onSave }) {
return (
<State type={Form} value={{ flares, knotsPerFlare }}>
{form => {
return (
<form onSubmit={onSubmit(form)}>
<label>
Number of flares <input type="number" onChange={$(string, form.flares.set)} value={form.flares.state} />
</label>
<label>
Knots per flare <input type="number" onChange={$(string, form.knotsPerFlare.set)} value={form.knotsPerFlare.state} />
</label>
<button type="submit" disabled={form.isUnchanged}>Save</button>
</form>
)
}}
</State>
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment