我有一个Keyboard.vue
包含许多Key.vue
子组件实例的组件(每个键一个)。
在Key.vue
中,键实际上是一个<button>
可以被禁用的 html 元素。
通过单击我的应用程序中的某个按钮,我想重置键盘并再次启用所有键。我认为将 a 设置v-if
为false
thentrue
再次 ( <keyboard v-if="BooleanValue" />
) 将重新渲染Keyboard.vue
及其所有 Key.vue 子组件实例。
它没有。为什么不?
应用程序.vue
<template>
<div class="app">
...
<keyboard v-if="!gameIsOver && showKeyboard" />
...
</div>
</template>
<script>
export default {
components: {
Keyboard
},
computed: {
gameIsOver () {
return this.$store.state.gameIsOver
},
showKeyboard () {
return this.$store.state.showKeyboard
}
}
键盘.vue
<template>
<section>
<key class="letter" v-for="(letter) in letters" :key="letter" :letter="letter" />
</section>
</template>
键.vue
<template>
<button :disabled="disabled" @click="checkLetter(letter)">
{{ letter }}
</button>
</template>
<script>
export default {
...
data () {
return {
disabled: false
}
}
我的按钮重置键盘触发器:
this.$store.commit('SET_KEYBOARD_VISIBILITY', false)
this.$store.commit('SET_KEYBOARD_VISIBILITY', true)