gpt4 book ai didi

javascript - Backbone.sync 说明

转载 作者:行者123 更新时间:2023-11-28 00:05:09 25 4
gpt4 key购买 nike

阅读 docs 后,这就是我对sync的理解。

我实例化一些Backbone.Model并调用Collection.create()create() 最终调用 sync(),并且 ModelPOST 发送到服务器。然后有一个相反方向的同步,以便为客户端上的模型提供一个id

此更新是否会触发 componentDidUpdate()
注意: componentDidUpdate 是一个 ReactJS 的东西,所以如果这没有意义,问题就简化为“客户端模型是否已更新并且 View 是否重新渲染? ”

由于在我的 componentDidUpdate() 内部,我正在调用 save() 以使所有内容保持最新,因此随后会调用 sync () 然后触发 PUT 请求(因为 Model 已经有一个 id)。

我问,因为在我当前的应用程序中,创建一个 TodoItem 似乎会导致一个 POST ,然后是一个 PUT ,我发现这是多余的。也许是出于不相关的原因。

在添加一项时,它实际上会触发两个 POSTS,然后触发两个 PUTS,但这是另一个问题。

最佳答案

第一次保存模型(没有 ID 的模型)时,它将进行 POST,此后它将进行 PUT(更新)。我认为您对何时使用 create/add/save 感到困惑:

  • 随时使用 save 将当前客户端集合/模型状态保存到服务器
  • 使用 add 将模型添加到集合(单个模型、模型数组或包含属性并让集合创建它们的对象数组)
  • 使用 create 作为创建模型、将其添加到集合以及将集契约(Contract)步到服务器的简写。

我的猜测是,您在一次操作中调用 createsave - 您应该使用 addsave 相反,或者只是创建

View 不会自动为您更新,您需要监听集合/模型上的更改或事件并自行更新 View - 没有与 componentDidUpdate 等效的东西。例如:

initialize: function() {
this.listenTo(this.collection, 'sync', this.onCollectionSync);
},

onCollectionSync: function() {
this.render();
}

关于javascript - Backbone.sync 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31414714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com