Computing Derived Data
Motivation for Memoized Selectors
containers/VisibleTodoList.js
containers/VisibleTodoList.jsimport { connect } from 'react-redux'
import { toggleTodo } from '../actions'
import TodoList from '../components/TodoList'
const getVisibleTodos = (todos, filter) => {
switch (filter) {
case 'SHOW_ALL':
return todos
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
}
}
const mapStateToProps = state => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter)
}
}
const mapDispatchToProps = dispatch => {
return {
onTodoClick: id => {
dispatch(toggleTodo(id))
}
}
}
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
export default VisibleTodoListCreating a Memoized Selector
selectors/index.js
selectors/index.jsComposing Selectors
Connecting a Selector to the Redux Store
containers/VisibleTodoList.js
containers/VisibleTodoList.jsAccessing React Props in Selectors
reducers/index.js
reducers/index.jsreducers/todoLists.js
reducers/todoLists.jsactions/index.js
actions/index.jscomponents/TodoList.js
components/TodoList.jscomponents/App.js
components/App.jsselectors/todoSelectors.js
selectors/todoSelectors.jscontainers/VisibleTodoList.js
containers/VisibleTodoList.jsSharing Selectors Across Multiple Components
selectors/todoSelectors.js
selectors/todoSelectors.jscontainers/VisibleTodoList.js
containers/VisibleTodoList.jsNext Steps
Last updated