Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

205
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda