hasyrails / calendar-vue-original

0 stars 0 forks source link

26 icon trans modify / アイコン切り替えロジック修正 #55

Closed hasyrails closed 4 years ago

hasyrails commented 4 years ago

ref #27

アイコンの切り替えはうまく行く時はどんな時か

<div>
-<p v-if="devidedSchedule.icon===1"><font-awesome-icon icon="coffee"  size="sm" /></p>
-<p v-else-if="devidedSchedule.icon===2"><font-awesome-icon icon="bath"  size="sm" /></p>
-<p v-else-if="devidedSchedule.icon===3"><font-awesome-icon icon="birthday-cake" size="sm"/></p>
+<p v-if="icon===1"><font-awesome-icon icon="coffee"  size="sm" /></p>
+<p v-else-if="icon===2"><font-awesome-icon icon="bath"  size="sm" /></p>
+<p v-else-if="icon===3"><font-awesome-icon icon="birthday-cake" size="sm"/></p><p v-else></p>
 </div>

アイコンの切り替えを Calendarコンポーネント全体で共通で定義されている データ

data(){
  icon : 0
}

を使っている時、うまく切り替えることができる

うまく切り替えれる時

Image from Gyazo

全てのdevideSchedulesのアイコンが同時に切り替わってしまう

アナロジー

【Vue.js】複数のカウントボタンを、それぞれ押下した数だけカウントさせたい【Component】

コンポーネント化したら別々に切り替えることができそう

hasyrails commented 4 years ago

まずは

カレンダーの日付をコンポーネント化するのではなく、 参考のQiitaと同様に 簡単な例を試す

hasyrails commented 4 years ago

重要

今回、クリック数で変更されるcount親コンポーネントからわたすものではないので定義に気をつける必要あり 子コンポーネント内で定義されているのみで良い

比較

一斉に変更される場合

別々に変更される場合

結論

メソッドでcountを足し合わせていく処理

countUp(){
  this.count ++
}

のthisはどこを指しているかを考えて実装する

コンポーネント化すると そのコンポーネントの数だけthisを作れる

親で定義しただけだと変更できるのは1つしかないので一斉にしか変更できない

hasyrails commented 4 years ago

アイコンを連動させてみる

hasyrails commented 4 years ago

アイコン連動成功

Image from Gyazo

hasyrails commented 4 years ago

カレンダーの日付をコンポーネント化する必要がある

hasyrails commented 4 years ago

カウントリセットをメソッドで実装

methods: {
    countUp(){
      if(this.count <3){
        this.count ++
      }else{
        this.countReset()
      }
    },
    countReset(){
      this.count = 0
    }

Image from Gyazo