Saltar al contenido

Cómo vincular datos bidireccionales entre padres y nietos en Vue.js

Es fundamental comprender el código de forma correcta previamente a usarlo a tu proyecto y si tquieres aportar algo puedes comentarlo.

Solución:

La mejor solución que encontré

Por 0.12

http://012.vuejs.org/guide/components.html#Inheriting_Parent_Scope

para 1.0

http://v1.vuejs.org/guide/components.html#Comunicación entre padres e hijos

para 2.0

https://vuejs.org/v2/guide/components.html#Composing-Components (utilice accesorios para vincular datos unidireccionales de padre a hijo)

Hay varias formas de hacerlo, y algunas se mencionan en otras respuestas:

  1. Usar accesorios en los componentes
  2. Usar modelo v attribute
  3. Usar el modificador de sincronización
  4. Usar Vuex

Para los enlaces bidireccionales, tenga en cuenta que puede causar una cadena de mutaciones que son difíciles de mantener, citadas en los documentos:

Desafortunadamente, true El enlace bidireccional puede crear problemas de mantenimiento, porque los componentes secundarios pueden mutar al principal sin que la fuente de esa mutación sea obvia tanto en el principal como en el secundario.

Aquí hay algunos detalles de los métodos que están disponibles:

1.) Use accesorios en los componentes

Los accesorios son fáciles de usar y son la forma ideal de resolver los problemas más comunes.
Debido a cómo Vue observa los cambios, todas las propiedades deben estar disponibles en un objeto o no serán reactivas. Si se agregan propiedades después de que Vue haya terminado de hacerlas observables, se deberá usar el ‘conjunto’.

 //Normal usage
 Vue.set(aVariable, 'aNewProp', 42);
 //This is how to use it in Nuxt
 this.$set(this.historyEntry, 'date', new Date());

El objeto será reactivo tanto para el componente como para el padre:

te paso un objeto/array como accesorio, se sincroniza de forma bidireccional automáticamente: cambie los datos en el elemento secundario, se cambia en el elemento principal.

Si pasa valores simples (cadenas, números) a través de accesorios, debe usar explícitamente el modificador .sync

Como se cita de –> https://stackoverflow.com/a/35723888/1087372

2.) Usar modelo v attribute

el modelo v attribute es azúcar sintáctico que permite una fácil unión bidireccional entre padre e hijo. Hace lo mismo que el modificador de sincronización, solo que usa un accesorio específico y un evento específico para el enlace.

Esta:

 

es lo mismo que esto:

 

Donde debe estar el apoyo valor y el evento debe ser aporte

3.) Usa el modificador de sincronización

El modificador de sincronización también es azúcar sintáctico y hace lo mismo que v-model, solo que los nombres de accesorios y eventos se establecen según lo que se esté utilizando.

En el padre se puede utilizar de la siguiente manera:

 

Desde el niño se puede emitir un evento para notificar al padre de cualquier cambio:

 this.$emit('update:title', newTitle)

4.) Usa Vuex

Vuex es un almacén de datos al que se puede acceder desde todos los componentes. Los cambios se pueden suscribir.

Al usar la tienda Vuex, es más fácil ver el flujo de mutaciones de datos y se definen explícitamente. Mediante el uso de las herramientas de desarrollo de vue, es fácil depurar y revertir los cambios realizados.

Este enfoque necesita un poco más de repetitivo, pero si se usa a lo largo de un proyecto, se convierte en una forma mucho más clara de definir cómo se realizan los cambios y desde dónde.

Consulte la guía de introducción

Encontré que este es más preciso. https://vuejs.org/v2/guide/components.html#sync-Modifier solo en 2.3.0+ aunque. y honestamente todavía no es lo suficientemente bueno. debería ser simplemente una opción fácil para el enlace de datos ‘bidireccional’. así que ninguna de estas opciones es buena.

intente usar vuex en su lugar. tienen más opciones para tal fin. https://vuex.vuejs.org/en/state.html

Agradecemos que desees defender nuestra tarea fijando un comentario y dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *