Когда вы должны использовать 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
способ, который я делаю сейчас, могу ли я загрязнять глобальное пространство имен без необходимости?
Связанные документы: