如何使Meteor助手无反应

How Do I Make A Meteor Helper Non-Reactive?

本文关键字:何使 Meteor      更新时间:2023-09-26

我想让这个代码成为非反应性的。有办法吗?

Template.foo.helpers({
    info: function(){
        var user = Meteor.user();
            if (user && user.profile)
                return user.profile.info;
    }
});

我知道当你是Foo.find({}, {reactive:false}) 时有一种方法

我想知道是否有类似的东西。

我想您要找的是这里描述的Tracker.nonreactive(func)函数。根据文档,您需要将一个函数传递给该函数以执行,该函数将返回该函数的结果。此外,此函数不会关注您自己定义的函数中的任何反应性数据源更新。

我建议重写你的助手函数如下:

Template.foo.helpers({
    info: function() {
        return Tracker.nonreactive(function() {
            var user = Meteor.user();
            if(user && user.profile) {
                return user.profile.info;
            } else {
                // return some other appropriate value if the if-statement above
                // is not fulfilled
            }
        });
    }
});

您正在查找Tracker.non-reactive(很抱歉回答不正确,我在用手机)。