GET не дает мне новые данные - PullRequest
       23

GET не дает мне новые данные

0 голосов
/ 13 октября 2018

Я не совсем понимаю, почему мой компонент не отображает свои изменения.

toggle() {
    var url = rest.appointments + "/appointments";
    Request.get(url).then((response) => {
      this.setState(prevState => ({
        appointments: response.body.map(a => Object.assign({}, a, { end: new Date(a.end), start: new Date(a.start) })),
        modal: !prevState.modal
      }));
    });
  }

Метод toggle() вызывается, когда я нажимаю кнопку для создания новой встречи.До того, как я вызвал эту функцию, была создана встреча следующим методом: (я удалил нерелевантные строки)

saveAppointment() {
    var url = rest.appointments + "/appointment";
    Request.post(url)
    .set('Content-Type', 'application/json')
    .send('{"end":"' + end + '","start":"' + start + '" ,"title":"' + this.state.title + '","allDay":"false"}')
    .end(function(err, res) {
        properties.toggle();
    });
  }

Так что properties.toggle() вызовет метод toggle(), который находится в родительском компоненте.Когда я создаю первое назначение, компонент не отображается.Звонок GET не возвращает мне только что созданную встречу с saveAppointment().

Однако, если я позвоню saveAppointment() еще раз, будет показана предыдущая встреча и новая.Таким образом, всегда первый не находится в ответе на первый GET вызов.

Что мне нужно изменить, чтобы получать новые данные в вызове GET?

РЕДАКТИРОВАТЬЯ могу подытожить это следующим вопросом: Как я могу сначала сделать POST, а затем GET, не испортив мои результаты GET?

EDIT2: Я просто видел, что иногда это даже работает, когда я пробую это дляпервый раз.Я не понимаю, почему, но кажется, что это работает, когда я немного подожду, прежде чем создать новую встречу.

1 Ответ

0 голосов
/ 13 октября 2018

Полагаю, это происходит из-за кеша.Проверьте вкладку «Сеть» в консоли.Если код ответа 304 (Not modified), то браузер использовал кэшированный ответ.Чтобы избежать этого, вы можете использовать cache-control HTTP-заголовок или добавить какой-либо случайный параметр get к вашему запросу, например ?hash=[any-random-hash]

...