Soy nuevo en Vuejs. Estoy usando la biblioteca Primevue para construir la API usando la composición vuejs 3. Mi problema es que el menú no se actualiza. Quiero ocultar el botón Mostrar cuando se muestra el elemento y viceversa. Busqué en Internet y probé todas las soluciones que encontré, pero fue en vano. Cualquier ayuda se agradece, gracias
export default { name: "Quote", components: { loader: Loader, "p-breadcrumb": primevue.breadcrumb, "p-menu": primevue.menu, "p-button": primevue.button, }, setup() { const { onMounted, ref, watch, } = Vue; const data = ref(frontEndData); const quoteIsEdit = ref(false); const toggle = (event) => { menu.value.toggle(event); }; const quote = ref({ display_item_date: true, display_tax: true, display_discount: false, }); const menu = ref(); const items = ref([ { label: data.value.common_lang.options, items: [{ visible: quote.value.display_item_date, label: data.value.common_lang.hide_item_date, icon: 'pi pi-eye-slash', command: (event) => { quote.value.display_item_date = !quote.value.display_item_date; } }, { visible: !quote.value.display_item_date, label: data.value.common_lang.unhide_item_date, icon: 'pi pi-eye', command: () => { quote.value.display_item_date = !quote.value.display_item_date; } } ] ]); } return { data, quoteIsEdit, menu, items, toggle }; }, template: ` <div class="container-fluid" v-cloak> <div class="text-right"> <p-menu id="overlay_menu" ref="menu" :model="items" :popup="true"></p-menu> <p-button icon="pi pi-cog" class="p-button-rounded p-button-primary m-2" @click="toggle" aria-haspopup="true" aria-controls="overlay_menu"></p-button> <p-button :label="data.common_lang.save + ' ' + data.common_lang.quote" class=" m-2" /></p-button> </div> </div> ` };El problema es que el cambio de la subpropiedad de los items no es reactivo, por lo que los items.value.items[].visible no se actualizan automáticamente cuando quote.value.display_item_date cambia.
Una solución es hacer que los items sean un accesorio computed , de modo que se vuelvan a evaluar con los cambios en las ref internas:
// const items = ref([...]) const items = computed(() => [...])