Просмотр внутренних свойств подкомпонентов на самом деле не является способом 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);
}
}