Zastanawiam się, czy nadal istnieje punkt przy użyciu mapDispatchToProps
dziś. pracuję na redux documentation tutorials (zbudować listę todo) gdzie VisibleTodoList
jest opisany jako:mapDispatchToProps: dowolny punkt?
import { 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 VisibleTodoList
Jednak powiedziano mi, że dzisiaj, po prostu nie mogę zdefiniować mapDispatchToProps
i połączyć wszystko poprzez:
const VisibleTodoList = connect(
mapStateToProps,
toggleTodo
)(TodoList)
Czy to prawda? A jeśli tak, jaki jest sens napisania mapDispatchToProps
? Czy są jakieś wady po prostu zwróceniu akcji?
Dzięki!
Ah ... dlaczego mówisz, że 'mapDispatch' pobiera _trzec_ argumenty? Na źródło, jest to tylko raz wywoływane z jednym lub dwoma. – markerikson
Po prostu chcę dodać, że ostatnia linia, szczególnie jeśli twoja wysyłka prep opiera się na rzeczywistych wartościach prop w jakiś sposób, właśnie dlatego wciąż sam przygotowuję niektórych moich twórców akcji. W rzeczywistości rzadko orzekł, że mapDispatchToProps rzeczywiście przyjmuje 2 argumenty, z których drugi to selfProps, a jego tutaj mogę wprowadzić domyślne argumenty do moich twórców akcji z rekwizytów obiektów kontenerowych i nie trzeba ich przekazywać do komponentów podrzędnych. (Dzięki za przypomnienie markerikson, nie mogłem edytować komentarza ponownie, więc po prostu przeredagowałem go z poprawką). – JMac