一個selfupdating排序我有一個vuex店game
其中包含一個數組players
。如何實現VUE
每個player
有一個id
,name
和score
。
我現在有一個組件scoreboard
應該由他們的得分列出所有球員。
要排序玩家,我向我的組件添加了一個計算屬性。
當我現在在應用程序某處更新玩家分數時,我的計算屬性不會被觸發。我知道它沒有被觸發,因爲數組本身沒有改變。我需要調用push/pop/shift /改變數組的任何東西。
解決此問題的常用方法是什麼?當我更新一些屬性時,是否也應該改變數組?由於呈現player.points
已經成功更新的組件,這看起來很髒。
有沒有辦法來添加更多聽衆的計算性能?
我的組件:
<template>
<div class="scoreboard">
<strong>Scoreboard</strong>
<div class="scores">
<score-board-entry v-for="player in sortedPlayers" :key="player.id" :player="player"></score-board-entry>
</div>
</div>
</template>
<script>
import _ from 'lodash'
import ScoreBoardEntry from './ScoreBoardEntry.vue'
export default {
props: ['players'],
data() {
return { }
},
components: { ScoreBoardEntry },
computed: {
sortedPlayers() {
return _.sortBy(this.players, 'score')
}
}
}
</script>
<style scoped>
</style>
我的店:
const initialState: state = {
id: '',
players: []
}
const game = {
namespaced: true,
state: initialState,
mutations: {
addPoints (state: state, payload: addPointsPayload) {
const player = state.players.find((p) => p.id === payload.id)
player.points = player.points + payload.points
}
...
謝謝!這真的只是我的財產被錯誤地命名。 (-‸ლ) – Gundon
不客氣。那麼錯誤的名字在哪裏?傳遞給'scoreBoard'的'players'道具是不對的? – AWolf
是的。當排序'分數'是錯誤的,'分數'應該在那裏。 – Gundon