Skip to content

Instantly share code, notes, and snippets.

@joeporpeglia
Last active March 16, 2018 03:39
Show Gist options
  • Save joeporpeglia/83fa490e31f7e38af7fb6a078b208861 to your computer and use it in GitHub Desktop.
Save joeporpeglia/83fa490e31f7e38af7fb6a078b208861 to your computer and use it in GitHub Desktop.
React MVC architecture thoughts
import React from 'react';
import createModelComponent from './create-model-component';
import { Post } from 'restful';
const Model = createModelComponent(0, {
increment: () => prevState => prevState + 1,
decrement: () => prevState => prevState - 1,
});
const View = ({ onIncrement, onDecrement, count }) => (
<form>
<button onClick={onIncrement}>increment</button>
<button onClick={onDecrement}>decrement</button>
<span>Count: {count}</span>
</form>
);
const handleChange = (saveCount) => (prevState, state) => {
if (prevState !== state) {
saveCount(state);
}
};
const Controller = () => (
<Post url="/count">
{({ send }) => (
<Model onChange={handleChange(send)}>
{counter => (
<View
onDecrement={counter.decrement}
onIncrement={counter.increment}
count={counter.state}
/>
)}
</Model>
)}
</Post>
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment