Meteor 1.3 React日本語チュートリアル (step07)
Meteorの日本語版のチュートリアルのstep07です。
目次
- 最初のアプリを作成する
- Reactコンポーネントでビューを定義する
- コレクションにタスクを格納する
- フォームを使ってタスクを追加する
- タスクにチェックマークをつける・削除する
- アプリをAndroidやiOSで動かす
- 一時的なUIデータをステートに格納する (本記事)
- ユーザアカウントを追加する
- メソッドによるセキュリティ
- パブリッシュとサブスクライブによるデータフィルタリング
- テストについて
- その後の学習法について
一時的なUIデータをステートに格納する
このステップでは、アプリにクライアントサイドのデータフィルタリングの機能を追加します。具体的には、ユーザがチェックボックスをonにすることで未完のタスクのみを表示するようにします。Reactのコンポーネントステートを使ってクライアントのみで使う一時的な情報を格納する方法を学びます。
まず、App
コンポーネントにチェックボックスを追加しましょう。imports/ui/App.jsx
を下記のように修正してください。修正後のファイルはこちらのようになります。
チェックボックスの状態はthis.state.hideCompleted
から取得しています。Reactコンポーネントはstate
という特殊なフィールドを持ち、そこにコンポーネントデータを格納することができます。このthis.state.hideCompleted
の値をコンポーネントのコンストラクタで初期化する必要があるため、imports/ui/App.jsx
を下記のように修正してください。修正後のファイルはこちらのようになります。
this.state
はイベントハンドラからthis.setState
を呼び出すことで更新することができます。これにより、ステートは非同期に更新され、コンポーネントは再レンダリングされます。imports/ui/App.jsx
を下記のように修正してください。修正後のファイルはこちらのようになります。
さて、renderTasks
関数を修正してthis.state.hideCompleted
がtrueの場合に完了したタスクを表示しないようにしましょう。imports/ui/App.jsx
を下記のように修正してください。修正後のファイルはこちらのようになります。
チェックボックスをonにするとタスクリストが完了していないものだけになるはずです。
もう一つの機能: 未完のタスクの数を表示する
未完のタスクだけを取得するクエリが書けたので、同じクエリを使って未完のタスクの数を表示することができます。このためには、データコンテナでその数を取得して、render
メソッドでそれを表示するようにする必要があります。データ自体は既にクライアントサイドのminimongoのコレクションにあるため、この数を数えるためのクエリはサーバに対して追加の処理を要求するわけではありません。
imports/ui/App.jsx
を下記2つのように修正してください。修正後のファイルはこちらのようになります。
想定通り動いているか、アプリを確認しましょう。
次のステップへ
step08: ユーザアカウントを追加する