Как сделать выборку в реальном времени в реагировать родной? - PullRequest
2 голосов
/ 07 марта 2019

Привет, в моем проекте есть раздел комментариев для видео. Итак, я ожидаю, что покажу комментарии сразу после того, как пользователь их опубликовал. Я попробовал componentWillUpdate() метод. Но он каждый раз перерисовывает интерфейс , поэтому вызывает некоторое потрясение в пользовательском интерфейсе. Также я пытался вызвать метод fetch в рамках обещания postComment. Это означает, что в выборке публикации комментария я пытаюсь вызвать следующую выборку для отображения отправленных комментарии. Но бесполезно. Следующий код, который я пробовал

код

postComment(){
fetch(GLOBAL.COMMENT + `${this.props.id}/new/0`, {
        method: 'POST',
        headers: {
            'Authorization': token,
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            comment_content: this.state.text

        })
    })
    .then((response) => response.json())
    .then((responseData) => {

        this.setState({
            text: '',
            isLoad: false
        })
    }).then(() => {
        fetch(GLOBAL.GET_COMMENT + `${this.state.unit_id}/`, {
                method: 'GET',
                headers: {
                    'Authorization': token
                }
            }).then((response) => response.json())
            .then((responseData) => {
                this.setState({
                    comment: responseData.data,
                    tab2: true,
                    tab3: false,
                    isLoading: false

                })
            });
    })

}

Есть ли какое-то решение для этого? Пожалуйста, помогите. Любая помощь приветствуется. Спасибо!

1 Ответ

1 голос
/ 07 марта 2019

Так что это будет выглядеть примерно так, я не уверен, как настроен остальной ваш код, поэтому возьмите это с щепоткой соли.

getComments() {

  fetch(GLOBAL.GET_COMMENT + `${this.state.unit_id}/`, {
                method: 'GET',
                headers: {
                    'Authorization': token
                }
            })
            .then((response) => response.json())
            .then((responseData) => {
                this.setState({
                    comment: responseData.data,
                    tab2: true,
                    tab3: false,
                    isLoading: false

                })
            });
    })

};

postComment() {
  fetch(GLOBAL.COMMENT + `${this.props.id}/new/0`, {
          method: 'POST',
          headers: {
              'Authorization': token,
              'Accept': 'application/json',
              'Content-Type': 'application/json'
          },
          body: JSON.stringify({
              comment_content: this.state.text

          })
      })
      .then((response) => response.json())
      .then((responseData) => {

          this.getComments();
      })

}
...