Skip to content

Instantly share code, notes, and snippets.

@toranb
Last active August 11, 2016 05:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save toranb/5c7fcf6c9d10093f9ca9 to your computer and use it in GitHub Desktop.
Save toranb/5c7fcf6c9d10093f9ca9 to your computer and use it in GitHub Desktop.
a FRP ember component using redux (yay)
import Ember from 'ember';
import hbs from 'htmlbars-inline-precompile';
import connect from 'ember-redux/components/connect';
var stateToComputed = (state) => {
return {
low: state.low,
high: state.high
};
};
var dispatchToActions = (dispatch) => {
return {
up: () => dispatch({type: 'UP'}),
down: () => dispatch({type: 'DOWN'})
};
};
var CountListComponent = Ember.Component.extend({
layout: hbs`
<span class="parent-state">{{low}}</span>
<button class="btn-up" onclick={{action "up"}}>up</button>
{{count-detail high=high down=(action "down")}}
`
});
export default connect(stateToComputed, dispatchToActions)(CountListComponent);
@cowboyd
Copy link

cowboyd commented Apr 11, 2016

@bfitch I think you misread my intent. I gave this feedback to @toranb in order to help him drive adoption, not stifle it or push back on the ideas.

This was poorly said on my part. I can totally see how you might think of this as pushback on the idea itself rather than feedback on the form the idea takes inside Ember.... especially when you so often encounter knee-jerk reactions to change out there in the wild. I can only assure you that I want to see this work take root.

@bfitch
Copy link

bfitch commented Apr 11, 2016

@cowboyd Thank you for taking the time to respond at length and for clarifying your intent...really appreciate it. I understand were you're coming from much better and am relieved that you don't need to be sold on the value of Flux-y patterns. :)

I am totally on board with your concern to provide the most Ember-like API for these patterns and I agree that API changes should be justified and essential, instead of just ported over. One interesting thing I noticed while working on ember-cerebral was how well it integrates with Ember's existing routes, components, actions, and computed property APIs. The two fit together so well, but it requires learning (and liking) the "other half" of the integration: cerebral.

One interesting case study is vue.js. They introduced pretty much a redux port, but using the current Vue idioms and APIs: http://vuejs.github.io/vuex/en/intro.html.

Vuex is an application architecture for centralized state management in Vue.js applications. It is inspired by Flux and Redux, but with simplified concepts and an implementation that is designed specifically to take advantage of Vue.js' reactivity system.

Sounds like exactly what you (we?!) are advocating.

@cowboyd
Copy link

cowboyd commented Apr 12, 2016

@bfitch These are great finds. Thanks! They're both great stories of projects adapting new ideas to their own structure and vocabulary and vice-versa. It's clear to me that we're really just at the beginning of this journey, but I'm so looking forward to it.

@devinrhode2
Copy link

So who wants to do some elm pair programming with me? It's totallyl the future! http://elm-lang.org
I think most of the smartest nerds have left javascript already.

Also I'm interested in trying to port elm-ui sass to elm. Cut one language out of the picture. Also need to port compass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment