Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!