Отправка и возврат значения в другом компоненте - PullRequest
0 голосов
/ 02 декабря 2018

Привет, я работаю над комментарием раздела сообщения.

Я создаю редуктор 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, прежде чем я вызвал его из формы комментария?

Как я могу это решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...