Привет, я работаю над комментарием раздела сообщения.
Я создаю редуктор addcomment.js
вот так
var defaultCommentState = {
login_status: false,
author_name: '',
author_email: '',
author_url: 'https://google.com',
content: '',
post:null,
parent:0
}
const addComment = (state = defaultCommentState, action) => {
switch(action.type) {
case 'ADD_COMMENT':
return {
...state,
login_status: action.login_status,
author_name: action.author_name,
author_email: action.author_email,
content: action.content,
post: action.post,
parent: action.parent
}
default:
return state;
}
}
export default addComment;
У меня есть Detail.js
, который содержит компоненты: Post detail + List of comments + Comment Form
.
В этом вопросе я сосредотачиваюсь только на List of comments
(поскольку List of comments
содержит postId
для commentForm и parentId
многопотокового комментария)
Для возврата в список комментариев я использую CommentListвот так:
class CommentList extends Component {
constructor(props) {
super(props);
this.state = {
comments: [],
page: 1,
loadedDone: false,
error: null,
replyPostId: ''
}
}
componentDidMount() {
const apicomment = CelestialSettings.URL.api + "/comments/?post=" + this.props.postid + "&parent=0&page=" + this.state.page;
//Start Dispatch
store.dispatch({type: 'ADD_COMMENT', post: this.props.postid});
......
и вы увидите, что я сделал dispatch
здесь.
Затем в Comment Form
я подключаю store
с этим компонентом.
class CommentForm extends React.Component {
constructor(props) {
super(props);
let user = JSON.parse(localStorage.getItem('user'));
if (user && user.token) {
this.state = {
...this.props.addComment,
login_status : true,
author_name: user.user_nicename,
author_email: user.user_email,
content: this.props.content,
parent: 0
}
}else{
this.state = {
...this.props.addComment,
login_status: false,
}
}
}
...
...
export default connect(function(state) {
return {addComment: state.addComment}
})(withRouter(CommentForm));
Мой вопрос:
- Я отправил письмо, и оно вернуло
post id
, но почему оно не обновилось до Store
, прежде чем я вызвал его из формы комментария?
Как я могу это решить?