Skip to content

Instantly share code, notes, and snippets.

@prenaudin
Last active June 9, 2016 09:13
Show Gist options
  • Save prenaudin/7747387d536938fc5bfb3562ddef0646 to your computer and use it in GitHub Desktop.
Save prenaudin/7747387d536938fc5bfb3562ddef0646 to your computer and use it in GitHub Desktop.
Immutable.Record + React + Redux = ❤ - 4
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { toggleTaskDone } from 'actions/tasks';
import TaskMap from 'models/TaskMap';
import TaskListLayout from 'components/Task/List/Layout';
const TaskListContainer = ({ onToggleTaskDone, tasks }) => (
<TaskListLayout>
{ tasks.map((task) =>
<TaskListItem
key={task.get('id')}
task={task}
onToggleTaskDone=(() => onToggleTaskDone({ task }))
/>
).toArray()}
</TaskListLayout>
);
TaskListContainer.propTypes = {
tasks: React.PropTypes.instanceOf(TaskMap).isRequired,
onToggleTaskDone: React.PropTypes.func.isRequired,
}
function mapStateToProps(state) {
return { tasks: state.tasks };
}
function mapDispatchToProps(dispatch) {
return {
onToggleTaskDone: ({ task }) => {
dispatch(toggleTaskDone({ taskId: task.get('id') }));
},
};
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(TaskListContainer);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment