1
0

pageStackメソッドで、引数を設定する

Last updated at Posted at 2024-02-29

したいこと

pageStackメソッドを用いて、画面遷移をしたい。
その場合、遷移先のパラメーターの指定が
vue-routerと使い勝手が違ったので自分用にメモ。

【イメージ】

スクリーンショット 2024-02-29 12.41.15.png

↓ 「鴇色」を押下し、下記画面に遷移

スクリーンショット 2024-02-29 12.41.36.png

前提

  • Vue 3.0
  • OnsenUI

結論

以下のように記述

this.pageStack.push({
    extends: コンポーネント名,
    data() {
      return {
      //渡したい値(※ここで言うと、押下したli要素の「鴇色」の情報)
        キー: 
      };
    }
  })

これだけだと忘れてしまいそうなので(自分が)
以下に問題の全体像も記述しておきます。

問題の全体像

一覧ページのテンプレート(親コンポーネント)

■したこと

  • 一覧ページのテンプレート化(類似画面が発生するため)
  • $emitで一覧ページ(子コンポーネント)に値を渡す
listTemplete.vue
<template>
    <ul class="c-colorLists">
          <li v-for="(item, index) in colorLists" :key="index" @click="getItem(item)">
    </ul>
</template>
<script>
export default {
  data () {
    return {
      value: String,
    }
  },
  methods: {
   getItem (item) {
      this.value = item; //押下したリスト要素の値を取得
      this.$emit('onClick', this.value)
    }
  }
}
</script>

一覧ページ(子コンポーネント)

■したこと

  • $emitで指定したonClickメソッドを用いて、pushメソッドを指定
  • 渡したい値はJSONを文字列に変換
  • this.pageStack.pushメソッドを使用 ←★結論の内容
listPage.vue
<template>
    <color-lists :color-lists="thirdExam" @onClick="push"></color-lists>
</template>
<script>
export default {
  methods: {
      push (value) {
      let item = JSON.stringify(value); //押下したリストの値を文字列に変換
      this.pageStack.push({
        extends: thirdColorDetail,
        data() {
          return {
            colorItem: item //渡したい値
          };
        }
      })
    }
  }
}
</script>

詳細ページ

■したこと

  • dataプロパティで、listPage.vueから渡される「item」を受け取る(※””を指定しているが、moutedで上書きされる箇所)
  • mountedメソッドで、受け取った「colorItem」をJSONに変換
detailPage.vue
<template>
        <div class="descBlock">
          <h2>{{item.title}}</h2>
          <p>
            {{item.subTitle}}
          </p>
          <p class="desc">
            {{item.description}}
          </p>
        </div>
</template>
<script>
  data(){
    return {
      item: "",
    }
  },
  mounted(){
      this.item = JSON.parse(this.colorItem); //押下したリストの値を、JSONに変換
  }
  </script>
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0