【发布时间】:2018-05-06 19:44:47
【问题描述】:
我不确定为什么在我更新父组件中的数据时我的道具没有更新。我已经在小提琴中尝试过了,它可以工作https://jsfiddle.net/f3w69rr6/1/,但它在我的应用程序中不起作用。
父母:
methods: {
addToHand(index) {
let card = this.gameState.playerDeck.splice(index, 1)
if (this.gameState.playerHand.length < 12)
{
// put card into hand
this.$set(this.gameState, 'playerHand', [...this.gameState.playerHand, card])
// this.gameState.playerHand.push(card)
}
// otherwise discard card
},
retrieveDeck() {
let array = []
for (let i = 0; i < 20; i++)
{
array.push(this.src + "?text=card"+i)
}
this.$set(this.gameState, 'playerDeck', array)
},
},
mounted () {
this.retrieveDeck()
for (let i = 0; i < 5; i++)
{
this.addToHand(1)
}
},
通过以下方式将数据放入子节点:
<PlayerCards :gameState="gameState" :hand="gameState.playerHand" />
孩子:
export default {
name: 'PlayerCards',
props: ["gameState", "hand"],
data() {
return {
}
},
computed: {
rows() {
let cards = this.gameState.playerHand
let max = 6;
if (cards.length <= max)
return [cards]
var mid = Math.ceil(cards.length / 2);
let return_value = [cards.slice(0, mid), cards.slice(mid)]
return return_value
}
}
}
但行内容为空。
更新(更新小提琴):
问题出在计算上
【问题讨论】:
-
hmm,我认为你应该修复道具的类型,我不知道它是否会影响任何东西,但尝试一下:vuejs.org/v2/guide/components.html#Prop-Validation
-
你在mounted for
this.gameState中得到任何值吗?在子组件中? -
@user2486 因此,当我在浏览器中执行
console.log(this.gameState)时,它会显示它有内容,但如果我将Object.assign({}, this.gameState)运行到其他内容并记录它,它将为空(如预计在初始化)。问题是它在我的应用程序中没有反应,而它在我的小提琴中似乎工作正常。如有必要,我可以发布更多代码。