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

183
Visualizações
Vue.js: la propiedad no es reactiva cuando se inicializa a través de PHP

Tengo un componente principal ( lista de elementos ) al que paso elementos desde una vista de PHP (Laravel/Blade). La lista de elementos consta de elementos de lista (componente secundario). Dentro de un elemento de lista, quiero modificar/eliminar este elemento específico. Después de activar la eliminación dentro del componente secundario, se emitirá un evento de regreso al componente principal donde el elemento finalmente se eliminará de la lista de elementos.

Parece que este enfoque no es reactivo. Si, en cambio, uso data() con algunos datos ficticios para los elementos de la lista de un accesorio que se completa a través de PHP, es reactivo.

¿Cómo puedo garantizar la reactividad de los props que se pasan a través de PHP?

Componente principal:

 <template> <my-list-item v-for="item of items" :key="item.id" :item="item" @remove="removed" ></my-list-item> <br /> </template> <script> import MyListItem from './my-list-item' export default { // parent component name: "my-list", components: { MyListItem }, data() { return { // this will work. items are reactive // items: [ // // { id: 1, message: 'foo' }, // { id: 2, message: 'bar' }, // // ] } }, props: { // not reactive, items come from PHP view (Laravel/Blade). items: { type: Array, default: undefined } }, methods: { removed: function (item) { _.remove(this.items, item); } } }; </script>

Componente hijo:

 <template> <!-- item stuff here (label, etc.) ... --> {{ item.message }} <!-- remove link --> <a href="#" @click="remove(item)">remove</a> </template> <script> // child export default { name: "my-list-item", props: { item: { type: Object, } }, emits: [ 'remove' ], methods: { remove: function (item) { this.$emit("remove", item); } }, }; </script>

Vista de PHP (list.blade.php):

 @extends('dashboard') @section('title', 'List items') @section('content') <my-list :items="{{ Session::get('items') }}"></my-list> @endsection
about 4 years ago · Juan Pablo Isaza
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