import { bindActionCreators } from 'redux'; import { connect } from 'react-redux'; import { makeCardIdsByListIdSelector, makeListByIdSelector } from '../selectors'; import { createCard, deleteList, updateList } from '../actions/entry'; import List from '../components/List'; const makeMapStateToProps = () => { const listByIdSelector = makeListByIdSelector(); const cardIdsByListIdSelector = makeCardIdsByListIdSelector(); return (state, { id, index }) => { const { name, isPersisted } = listByIdSelector(state, id); const cardIds = cardIdsByListIdSelector(state, id); return { id, index, name, isPersisted, cardIds, }; }; }; const mapDispatchToProps = (dispatch, { id }) => bindActionCreators( { onUpdate: (data) => updateList(id, data), onDelete: () => deleteList(id), onCardCreate: (data) => createCard(id, data), }, dispatch, ); export default connect( makeMapStateToProps, mapDispatchToProps, )(List);