GET无法获取新数据

时间:2018-10-13 19:18:10

标签: javascript reactjs superagent

我真的不明白为什么我的组件不呈现其更改。

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调用中获取新数据时,我需要更改什么?

编辑:我可以通过以下问题来总结:如何在不弄乱我的GET结果的情况下首先进行POST,然后进行GET?

EDIT2:我刚刚看到有时甚至在我第一次尝试时也可以使用。我不知道为什么,但是当我在创建新约会之前稍等片刻,它似乎可以正常工作。

1 个答案:

答案 0 :(得分:0)

我认为这是由于缓存而发生的。在控制台中检查“网络”选项卡。如果响应代码为304 (Not modified),则浏览器使用了缓存的响应。为避免这种情况,您可以使用cache-control HTTP标头或向请求中添加一些随机的get参数,例如?hash=[any-random-hash]