yuheijotaki.com

Vue.js / JSON から情報を引っ張ってくる その13

f:id:jotaki:20190212100544p:plain

【学習メモ】Vue.js のツボとコツがゼッタイにわかる本 その3 のデモをベースにしてポートフォリオサイトを作り直す。

Github Pages: https://yuheijotaki.github.io/vue-study_20190424/
リポジトリ: https://github.com/yuheijotaki/vue-study_20190424

ファイル構成

/src/
└ App.vue
└ main.js
└ /components/
  └ work-header.vue
  └ work-list.vue
  └ work.vue

App.vue ファイルにて axios を使ってJSON取得、 表示判定は work-list.vue で行う。
work-header.vue からチェックボックス状態のプロパティと値を props して work-list.vue で表示判定
work.vue はアイテム1つ単位の表示専用コンポーネント

いじった所

WordPress の REST API で取得できるカテゴリーが

[
  0: {
    ...
    category_name: "Front-end ,WordPress"
    ...
  },
  ...
]

というオブジェクトになるので、

  methods: {
    request: function(){
      axios.get( 'https://works.yuheijotaki.com/wp-json/wp/v2/posts?per_page=100' )
      .then( response => {
        this.works = response.data; // JSONデータの取得
        let obj = this.works;
        Object.keys(obj).forEach((key) => {
          const catName = obj[key].category_name; // この投稿が属するカテゴリー
          if (catName.includes('Front-end')) {
            obj[key].isCatFrontEnd = true;
          } else {
            obj[key].isCatFrontEnd = false;
          }
  ...

のように isCatFrontEnd のプロパティと true or false の値をつけた。
work-list.vuecomputed でこの処理やったほうがスマートそうですが、できるかよく分からずJSONに書き足す形になっちゃいました。

残り

  • 記述の整理

    • ファイルやパーツ命名のリファクタリング
    • コンポーネントの分け方も見直しをする
  • スタイリング

    • 見た目整える
    • レスポンシブ