Mokelab Blog

画面遷移してみよう

前回はアプリに page.js を導入してみました。今回は複数の画面を用意し、画面遷移を実現してみましょう。

2番目の画面を定義する

画面遷移を扱うには、当然ですが遷移先となる 2番目の画面が必要です。すでにここまでの説明でトップ画面を TopPage クラスとして定義しているので、それに倣って 2番目の画面を SecondPage クラスとして定義してみます。

import Ractive from "ractive";

export class SecondPage implements IPage {
  private ractive!: Ractive;

  onCreate(): void {
    this.ractive = new Ractive({
      el: "#container",
      template: "#secondTemplate",
    });
  }
}

id=secondTemplate を表示するよう指定しているので、 index.html にもテンプレートを追加しておきます。

<script id="topTemplate" type="text/plain">
    <h1>Top page</h1>
</script>
<!-- 2番目の画面用 -->
<script id="secondTemplate" type="text/plain">
    <h1>Second page</h1>
</script>

ルーティングの設定をする

2番目の画面クラスが定義できたら、次はルーティングの設定をします。 ルーティングの設定は main.ts で行っていました。今回は /second というパスでアクセスされたときに、SecondPage が使用されるよう設定してみます。

page("/", () => {
  new TopPage().onCreate();
});
// 2番目の画面を表示するパス
page("/second", () => {
  new SecondPage().onCreate();
});

画面遷移のためのボタンを TopPage に追加する

クリック/タップすると SecondPage に遷移するボタンを用意しましょう。わかりやすさのためにbutton を使用しますが、onclick の設定できる要素であれば何でもよいです。クリック時に発生させるイベント名も指定しておきます。

<script id="topTemplate" type="text/plain">
          <h1>Top page</h1>
          <button on-click="toSecond">次の画面へ</button>
      </script>

画面遷移の関数を呼ぶ

今回の記事で一番大事な部分ですTopPage にボタンを追加し、イベントも設定したので次はイベントでどんな処理をするかを記述します。今回は 2番目の画面に遷移するイベントとなるよう、次のように記述します。

import Ractive from "ractive";
import page from "page";

export class TopPage implements IPage {
  private ractive!: Ractive;

  onCreate(): void {
    this.ractive = new Ractive({
      el: "#container",
      template: "#topTemplate",
      on: {
        toSecond: () => {
          // /second に遷移する
          page("/second");
        },
      },
    });
  }
}

page.js を用いた画面遷移は、page()関数に遷移先となるパスを記述するだけです。これでボタンをタップ/クリックすると 2 番目の画面が表示されます。ブラウザバックにも対応しており、ブラウザの戻るボタンを押すとちゃんと TopPage の内容が表示されます。

まとめ

page.jsによる画面遷移のやり方を説明しました。 画面遷移そのものは関数を呼ぶだけなので、ある程度プログラミングに慣れた方であれば使い方に困ることはないでしょう。

本サイトではサービス向上のため、Google Analyticsを導入しています。分析にはCookieを利用しています。