Ich frage mich, ob es heute noch einen Punkt gibt, der mapDispatchToProps
verwendet. Ich arbeite an der redux documentation tutorials (eine To-do-Liste erstellen), wo VisibleTodoList
wird wie folgt beschrieben:mapDispatchToProps: Irgendein 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
Allerdings habe ich gesagt, dass heute, konnte ich einfach nicht mapDispatchToProps
zu definieren und verbinden alles durch:
const VisibleTodoList = connect(
mapStateToProps,
toggleTodo
)(TodoList)
Ist es richtig? Und wenn ja, was ist der Punkt, ein mapDispatchToProps
zu schreiben? Gibt es irgendwelche Nachteile, die Aktion einfach zurück zu geben?
Danke!
10 Ah ... warum sagst du 'mapDispatch' nimmt _three_args? Pro Quelle wird es immer nur mit einem oder zwei aufgerufen. – markerikson
Ich möchte nur hinzufügen, dass die letzte Zeile, vor allem wenn Ihre Dispatch Prep auf die tatsächlichen Prop-Werte in irgendeiner Weise beruht, genau das ist, warum ich noch einige meiner Action-Ersteller selbst vorbereite. In der Tat hat es selten gesagt, dass mapDispatchToProps tatsächlich 2 Argumente hat, das zweite ist ownProps und hier kann ich Standard-Argumente in meine Aktions-Ersteller von den Containerobjekt-Requisiten einfügen und sie nicht an untergeordnete Komponenten übergeben. (Danke für die Erinnerung markerikson, ich konnte den Kommentar nicht noch einmal bearbeiten, also habe ich es gerade mit der Korrektur veröffentlicht). – JMac