我正在尝试使用此代码使 Meteor 助手无 react :
let titleNonReactive;
Template.articleSubmission.onCreated(function () {
this.autorun(function() {
titleNonReactive = Template.currentData().title;
});
});
Template.articleSubmission.helpers({
titleNonreactive: function() {
return titleNonReactive;
}
});
然而,由此产生的输出仍然是 react 性的。如果我在后台保存一个新值,它会在前端自动更新,我用
{{ titleNonreactive }}
显示这个助手的结果。我怎样才能解决这个问题?
最佳答案
这可能是由您的 Blaze 数据上下文引起的(需要查看您的模板代码进行确认),但这里有一个可能的解决方案,不涉及使用 Tracker.nonreactive
。由于您希望 titleNonreactive
的值不是响应式的,您可以只使用标准的本地/非响应式变量来存储原始响应式标题的副本。例如:
import { Template } from 'meteor/templating';
import { articles } from '/imports/api/articles/collection';
import './main.html';
let originalTitle;
Template.body.onCreated(function onCreated() {
this.autorun(() => {
const article = articles.findOne();
if (article && !originalTitle) {
originalTitle = article.title;
}
});
});
Template.body.helpers({
article() {
return articles.findOne();
},
titleNonreactive() {
return originalTitle;
}
});
然后在您的模板中:
<ul>
{{#with article}}
<li>Reactive Title: {{title}}</li>
<li>Non-Reactive Title: {{titleNonreactive}}</li>
{{/with}}
</ul>
关于Meteor - Tracker.nonreactive() 没有从助手中移除 react 性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38748611/