查看子组件内部属性并不是真正的 Vue 方式,像 $options 这样的属性被插件等使用,但你不应该在日常代码中真正使用它。
理想情况下,您应该有一个 v-if 或一个将两者联系起来的事件,但似乎这是不可能的。
因此,您应该与Vuex 共享状态,并基于此共享状态具有条件行为。比如:
// store.js
export default new Vuex.Store({
state: {
userCanUndo: false,
},
mutations: {
setUserCanUndo(state, value) {
state.userCanUndo = value;
}
},
}
// Undo.vue
<template>
<div v-if="userCanUndo">
<!-- ... -->
</div>
</template>
<script>
import { mapState } from 'vuex';
export default {
computed: {
...mapState(['userCanUndo']),
},
}
</script>
// DeleteButton.vue
<template>
<button :disabled="userCanUndo" @click="delete">
Delete
</button>
</template>
<script>
import { mapMutations, mapState } from 'vuex';
export default {
computed: {
...mapState(['userCanUndo']),
},
methods: {
...mapMutations(['setUserCanUndo']),
delete() {
// your delete code here
this.setUserCanUndo(true);
setTimeout(() => { this.setUserCanUndo(false); }, 2000);
}
}