Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

200
Vistas
¿Cómo usar Vuex para almacenar el estado del componente modal en la lista de componentes secundarios?

Estoy tratando de usar vuex para almacenar un valor que muestra/oculta un modal en un componente secundario. El componente secundario se representa varias veces por su componente principal en una lista. Sin embargo, el modal siempre muestra el último elemento de la lista y puedo ver que mi valor modal calculado de mi estado vuex se ejecuta la misma cantidad de veces que la cantidad de elementos en la lista.

Estado Vuex

 export default function () { return { currentProduct: {}, allProducts: [], editProductDialog: false }; }

mutaciones Vuex

 export const setEditProductDialog = (state, editProductDialog) => { state.editProductDialog = editProductDialog }

Componente principal:

 <div> <product v-for="product in allProducts" :key="product.id" :product="product" /> </div>

Componente hijo:

 <template> <div class="row justify-start"> <div class="col-6"> <q-item clickable v-ripple @click="runSetEditProductDialog"> <q-item-section avatar> <q-icon name="chevron_right" /> </q-item-section> <q-item-section class="text-body1">{{ name }}</q-item-section> </q-item> </div> <q-dialog v-model="editDialog" no-backdrop-dismiss> ... ... </q-dialog> </template> ... <script> export default { name: "Product", props: ["product"], data: () => ({ }), methods: { ...mapMutations({ setEditProductDialog: "product/setEditProductDialog" }), runSetEditProductDialog() { this.setEditProductDialog(true) }, }, computed: { ...mapState("product", ["editProductDialog"]), editDialog: { get() { console.log("in get") return this.editProductDialog; }, set(value) { console.log("in set") this.setEditProductDialog(value); }, }, }, }; </script>

Como dije, el cuadro de diálogo siempre muestra el último componente del product y puedo ver las declaraciones de impresión en mi sección calculada ejecutándose la misma cantidad de veces que la cantidad de elementos en allProducts .

¿Cómo uso correctamente vuex para almacenar el estado modal al representar una lista de componentes?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

En lugar de booleano verdadero/falso, intente establecer la identificación:

 @click="runSetEditProductDialog(product.id)" runSetEditProductDialog(id) { this.setEditProductDialog(id) },

y en su propiedad calculada compárelo:

 return this.editProductDialog === this.product.id
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda