Если вы не используете mapDispatchToProps
, вы ничего не должны передавать функции connect
. Таким образом, функция dispatch
предоставляется в качестве опоры для вашего компонента.
Итак, если вы экспортируете свой компонент как
// First one is 'mapStateToProps', not 'mapDispatchToProps' like in your code
export default connect(mapStateToProps)(App)
Вы можете использовать this.props.dispatch
в своем обработчике отправки. Итак, что-то вроде
onSubmitHandler = (event) => {
this.props.dispatch({ type: "SOME_ACTION", foo: "bar" })
}
Также, вероятно, проще / лучше использовать создателей действий.
// In some actions.js file or something
export const updateSomething = (data) => {
return {
type: "UPDATE",
payload: data,
// OR map specific attributes from the data object
}
}
// In your component
import { updateSomething } from './actions.js'
class App extends React.Component {
// .. all other code ..
submitHandler = (event) => {
// These values would probably also be better in state variables
const data = {
title: this.title.current.value,
message: this.message.current.value
}
this.props.updateSomething(data)
}
}
const mapDispatchToProps = {
updateSomething,
}
export default connect(mapStateToProps, mapDispatchToProps)(App)
Если вы хотите отобразить пару функций и также используют функцию отправки в вашем компоненте, вы можете сделать это следующим образом: https://react-redux.js.org/using-react-redux/connect-mapdispatch#defining -the-mapdispatchtoprops-function-with-bindactioncreators