Mam teraz taką dość ciężką rozkminę. Teraz akurat walczę ze store w Vuex, chociaż tego typu temat może pojawić się wszędzie indziej.
Tworzę sobie własną wersje gry monopoly. Tak wygląda tablica z graczami w store:
players:[
{color:'red', field:0, name:'red', money:1000,current:true },
{color:'blue', field:0,name:'blue', money:1000,current:false},
{color:'gray',field:0,name:'agent', money:0,current:false}
],
Wlaściwość field przechowuje numer pola na ktorym przebywa gracz. Sęk w tym też że numer pola musi się zrestować po przejściu całej planszy, tutaj robię to przez modulo.
Tak wygląda moja metoda na przenoszenie gracza:
let field = this.$store.state.players.find((el)=>el.current==true).field;
field += val;
field = field % 26;
Oczywiście ona nie zadziała, bo zapisując daną ze store do zmiennej field manipulujemy potem tylko zmienną field, a nie tym co faktycznie siedzi w store.
Zadziała dopiero taki kod:
this.$store.state.players.find((el)=>el.current==true).field += val;
this.$store.state.players.find((el)=>el.current==true).field = this.$store.state.players.find((el)=>el.current==true).field % 26;
Wygląda to dosyć idiotycznie, ale działa. Natomiast nie ma lepszego sposobu na używanie powtarzających się fragmentów kodu?