gpt4 book ai didi

javascript - Meteor JS : How to prevent double rerendering when using Meteor. 调用插入集合?

转载 作者:行者123 更新时间:2023-11-30 06:26:04 24 4
gpt4 key购买 nike

这是我的问题:

在模板事件处理程序中,我使用 Meteor.call() 来调用一个方法来将文档插入到集合中。

出于某种原因,这会导致关联的模板呈现两次而不是一次。如果我直接在事件处理程序中使用 Collection.insert(),模板只会呈现一次。我很困惑为什么它会渲染两次。如何防止模板在数据发生变化时渲染两次?

这是我的代码:

Posts = new Meteor.Collection('posts');

if (Meteor.isClient) {
Template.postItem.rendered = function(e){
console.log("This was rendered");
}

Template.postsList.helpers({
posts: function() {
return Posts.find();
}
});

Template.postsList.events({
'submit form' : function (e) {
e.preventDefault();

var post = {
title: $(e.target).find('[name=title]').val(),
}

// This causes double render
Meteor.call('post', post, function(error, id){
if (error) {
console.log(error);
}
});

// This causes only a single render
//Posts.insert(post);
}
});
}

Meteor.methods({
post: function(attrs) {
return Posts.insert(attrs);
}
});

最佳答案

这是一个众所周知的问题。你可以阅读unofficial FAQ关于这个问题(为什么我有时会在延迟补偿方法中看到文档的两个副本?)。

我个人通过在方法中生成 id 来解决这个问题(作为被插入文档的散列加上一些作为参数传递的随机盐来平息偏执狂)并在客户端和服务器上执行具有相同 id 的插入。

关于javascript - Meteor JS : How to prevent double rerendering when using Meteor. 调用插入集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982275/

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