Last active
March 21, 2017 21:09
-
-
Save StevenJL/9186fc4f031bddddafb1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import React, { Component } from 'react' | |
| import { connect } from 'react-redux' | |
| import { addTodo, completeTodo, setVisibilityFilter, VisibilityFilters } from '../actions' | |
| import AddTodo from '../components/AddTodo' | |
| import TodoList from '../components/TodoList' | |
| import Footer from '../components/Footer' | |
| class App extends Component { | |
| render() { | |
| // Also note the destructuring syntax: | |
| // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment | |
| const { dispatch, visibleTodos, visibilityFilter, onTodoClick } = this.props | |
| return ( | |
| <div> | |
| ... | |
| </div> | |
| ) | |
| } | |
| } | |
| function selectTodos(todos, filter) { | |
| switch (filter) { | |
| case VisibilityFilters.SHOW_ALL: | |
| return todos | |
| case VisibilityFilters.SHOW_COMPLETED: | |
| return todos.filter(todo => todo.completed) | |
| case VisibilityFilters.SHOW_ACTIVE: | |
| return todos.filter(todo => !todo.completed) | |
| } | |
| } | |
| // Which state props do we want to make available to this component | |
| function mapStateToProps(state) { | |
| return { | |
| visibleTodos: selectTodos(state.todos, state.visibilityFilter), | |
| visibilityFilter: state.visibilityFilter | |
| } | |
| } | |
| // to make callbacks that which invoke dispatch | |
| function mapDispatchToProps(dispatch) { | |
| return { | |
| onTodoClick: (id) => { | |
| dispatch(toggleTodo(id)) | |
| } | |
| } | |
| } | |
| // Wrap the component to inject dispatch and state into it | |
| export default connect(mapStateToProps, mapDispatchToProps)(App) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment