一个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