Javascript 反应+;主干应用程序由1个职位改为2个职位
我有一个用React和Backbone实现的restfultodo列表 现在,我不是在和数据库说话;只需要一个数组Javascript 反应+;主干应用程序由1个职位改为2个职位,javascript,rest,backbone.js,express,reactjs,Javascript,Rest,Backbone.js,Express,Reactjs,我有一个用React和Backbone实现的restfultodo列表 现在,我不是在和数据库说话;只需要一个数组var mytodos=[]在my server.js中。 以下是POST的服务器代码(使用Express): 当我向列表中添加一个项目时,我看到出于某种原因发布了两篇帖子 POST: {"id":0,"title":"test","completed":false} POST: {"id":1,"title":"test","completed":false} 在Chrome开发
var mytodos=[]代码>在my server.js中。
以下是POST的服务器代码(使用Express):
当我向列表中添加一个项目时,我看到出于某种原因发布了两篇帖子
POST: {"id":0,"title":"test","completed":false}
POST: {"id":1,"title":"test","completed":false}
在Chrome开发模式下,我看到:
PUT localhost/todos/0 404 (Not Found)
PUT localhost/todos/1 404 (Not Found)
两个PUT请求
试图通过它进行推理-save()
被调用,它调用sync()
。由于模型还没有id
(仅cid
),因此它会发出POST请求,并将todo(id=0)添加到myTODO
,然后更新客户端上的模型(添加id
属性)。由于检测到更改,它会执行另一个save()
,将其放到服务器上(I通过将create
更改为add
更具体地说,某个事件触发了一个主干.Collection.create
调用,该调用根据与服务器的同步进行
在React代码中,我有一个componentDidUpdate
,它调用Backbone.Model.save
,并尝试发送到服务器
因为该事件导致执行create
和save
,POST被触发了两次。我们也遇到过类似的问题,并且对于我们来说,如果视图(或任何对象)被初始化两次(或不止一次),就会出现双服务器请求问题。您可以将调试器放在chrome中,查看它是否被命中两次。如果您在更高级别初始化对象(如在模块中)是否在子视图中重新创建对象?我认为您需要显示触发帖子的React组件,服务器代码不是问题所在。Woops-看起来我不小心删除了这篇帖子的后半部分。已更新。
PUT localhost/todos/0 404 (Not Found)
PUT localhost/todos/1 404 (Not Found)
componentDidUpdate: function() {
this.props.todos.forEach(function(todo) {
console.log('componentDidUpdate: ' + todo.id); // logs: undefined, 0, 1
todo.save();
});
},
...
save: function(todo, text) {
console.log('Save: ' + todo.id); // only logged on update
todo.save({title: text});
this.setState({editing: null});
},
...
}