import { Template } from 'meteor/templating';
import { ReactiveDict } from 'meteor/reactive-dict';
import { Tasks } from '../api/tasks.js';
import './task.js';
import './body.html';
Template.body.onCreated(function bodyOnCreated() {
this.state = new ReactiveDict();
});
Template.body.helpers({
tasks() {
// Show newest tasks at the top
ReactiveDict
ReactiveDict
を使用すると、クライアントで一時的なリアクティブ状態を保存することができる。 キーと値を持つ通常のJSオブジェクトと似ているが、反応性が組み込まれている。これまでは、すべての状態をコレクションに格納しており、 これらのコレクション内のデータを変更すると、ビューは自動的に更新された。 これは、Mongo.CollectionがリアクティブデータソースとしてMeteorに認識されるため。 つまり、Meteorは内部のデータがいつ変更されたかを知っている。
ReactiveDict
は同じ方法だが、コレクションと同様にサーバーと同期されない。 これにより、ReactiveDict
は上記のチェックボックスのような一時的なUI状態を保存するのに便利。 コレクションと同様、ReactiveDict
変数が変更されたときにテンプレートを更新するための特別なコードを書く必要はない。 ヘルパー内でinstance.state.get(...)を呼び出すだけ。TODOリストのチェックがまだ付いていない項目を数えるためには