Я пытаюсь отправить действие из своего компонента для обновления состояния. Обычно я помещаю всех своих создателей действий в функцию подключения, например - connect (mapStateToProps, {actions}) (component).
Но после просмотра технических подробностей я подумал сделать mapDispatchToProps для моего подключения HO C.
Теперь проблема, с которой я столкнулся, заключается в том, что, как обычно, состояние обновляется с правильной полезной нагрузкой. но всякий раз, когда я пытаюсь вставить mapDispatchToProps в мое соединение HO C, действие запускается, но полезная нагрузка не отправляется.
Я прикрепляю фрагмент кода для облегчения понимания
//actions ------------------
import { SAVE_COMMENT } from "actions/types";
export function saveComment(comment) {
return {
type: SAVE_COMMENT,
payload: comment,
};
}
//reducer ------------------
import { SAVE_COMMENT } from "actions/types";
export default function (state = [], action) {
switch (action.type) {
case SAVE_COMMENT:
return [...state, action.payload];
default:
return state;
}
}
//component ------------------
import React, { Component } from "react";
import { connect } from "react-redux";
import { saveComment } from "actions/index";
class CommentBox extends Component {
state = {
comment: "",
};
handleChange = (e) => {
this.setState({ comment: e.target.value });
};
handleSubmit = (e) => {
e.preventDefault();
//call an action creator and save the comment
this.props.saveComment(this.state.comment);
this.setState({ comment: "" }); //to empty-out the textarea
};
render() {
return (
<form onSubmit={this.handleSubmit}>
<h4>Add a Comment</h4>
<textarea value={this.state.comment} onChange={this.handleChange} />
<div>
<button>Submit Comment</button>
</div>
</form>
);
}
}
const mapDispatchToProps = (dispatch) => {
return {
saveComment: () => dispatch(saveComment()),
};
};
export default connect(null, mapDispatchToProps)(CommentBox);