Когда вы должны использовать Session и ReactiveVar? Я использую переменную Session как среду связи между компонентами. Например, посмотрите на Stackoverflow.
Я обозначил три гипотетических компонента. Посмотрим на компонент filters. Если вы нажмете Tags, тогда компоненты Main будут отображать свои вопросы на основе ваших любимых тегов. Для этого я устанавливаю Session.set("Main/showTags", true) при нажатии кнопки Tags. В основном компоненте у меня будет вспомогательная функция, как показано ниже:
Template.Main.helpers({
posts: function() {
var isTags = Session.get("Main/showTags");
var isQuestions = Session.get("Main/showQuestions");
...
if (isTags) {
return Posts.find().sort({tags: 1}) // or something along the lines
} else if (isQuestions) ...
}
});
В большинстве случаев это сработало хорошо, но я видел из многих мест, что я должен воздержаться от использования Session и использовать ReactiveVar. Но если я использую ReactiveVar всюду, то мне нужна ссылка на все экземпляры шаблона. Я ожидаю, что он будет хорошо работать между прямыми родительскими и дочерними шаблонами (например, внутри основного компонента, может быть VoteAnswerViewsButtonTemplate), но как вы это сделаете с помощью ReactiveVar, когда вы хотите, чтобы независимые компоненты разговаривали друг с другом?
Вот мой последний вопрос. Как я могу соответствующим образом использовать Session и ReactiveVar, чтобы сохранить область компонентов и заставить их общаться друг с другом? Кроме того, если я использую Session способ, который я делаю сейчас, могу ли я загрязнять глобальное пространство имен без необходимости?
Связанные документы:
