Vux: Tanto el brindis como el espectáculo de alertas son bidireccionales y siempre informan de advertencia cuando se usa el flujo de datos unidireccional de vuex

Creado en 3 may. 2016  ·  12Comentarios  ·  Fuente: airyland/vux

Versión

"vux": "0.0.106"

Android o iOS, ¿qué navegador?

Todo

Tus Códigos

<toast :show="toast.show">{{toast.msg}}</toast>

Comportamiento esperado y comportamiento real.

Debido a que se usa como un componente global, sus subcomponentes usan directamente el flujo de datos unidireccional de vuex para activar la ventana emergente, pero el brindis y el programa de alerta son bidireccionales, por lo que siguen informando, advierten, y el trastorno obsesivo compulsivo es incómodo. .

Pasos para reproducir el problema

Comentario más útil

La combinación de vuex + vux también encontró la advertencia vinculada a twoWay al usar el componente Popup. Al principio, ¡también quería escuchar los eventos cuando se hicieron cambios!Más tarde encontré una nueva solución aquí: propiedades calculadas

Aquí hay un ejemplo simple.

<template>
  <popup :show.sync="showed">
    <group>
      <switch title="just switch" :value.sync="showed"></switch>
    </group>
   </popup>
</template>

<script>
export default {
  vuex: {
    getters: {
      getShow
    },
    actions: {
      updateShow
    }
  },
  computed: {
    showed: {
      get: function () {
        return this.getShow
      },
      set: function (val) {
        this.updateShow(val)
      }
    }
  }
}
</script>

En comparación con los eventos de monitoreo, hay una capa adicional de encapsulación de atributos de cálculo, pero también se despide para advertir

Todos 12 comentarios

Entonces, ¿cuál es tu sugerencia? TwoWay se debe a que la operación interna del componente cambiará el programa; de lo contrario, el estado será anormal.

TwoWay es solo para verificar si es un enlace bidireccional, ahora es para verificar la advertencia de tiempo

Por lo tanto, sugiero cancelar la verificación de enlace bidireccional, pero aún así cambia automáticamente el valor de show internamente, de modo que si usa el enlace bidireccional externamente, puede cambiar automáticamente el valor.

Por supuesto, estoy aquí para controlar el valor del espectáculo externamente.

¿Qué piensas?

¿No es solo comprobar?

¡Por supuesto que solo está comprobando!

No es necesario que escriba bidireccional, pero todavía está vinculado por la sincronización en el componente, y todavía puede ser bidireccional

Me acabo de transferir a VUE desde hace un mes, el camino no es profundo, espero asesorar 😄

Debería ser solo una función de verificación para el enlace de componentes. Si no necesita un enlace bidireccional para la presentación de Alerta, solo puede cambiar el valor de la presentación a través del evento on-hide .

Sí, la alerta ya está allí. Brindis, configuré setTimeout para cambiar el programa enlazado. Por supuesto, es mejor tener oculto.

También creo que brindis y alertas no son muy compatibles con vuex. Es mejor tener eventos ocultos y mantener la misma interfaz que las alertas.

@JianleiZhang Se implementará en la próxima versión.

La combinación de vuex + vux también encontró la advertencia vinculada a twoWay al usar el componente Popup. Al principio, ¡también quería escuchar los eventos cuando se hicieron cambios!Más tarde encontré una nueva solución aquí: propiedades calculadas

Aquí hay un ejemplo simple.

<template>
  <popup :show.sync="showed">
    <group>
      <switch title="just switch" :value.sync="showed"></switch>
    </group>
   </popup>
</template>

<script>
export default {
  vuex: {
    getters: {
      getShow
    },
    actions: {
      updateShow
    }
  },
  computed: {
    showed: {
      get: function () {
        return this.getShow
      },
      set: function (val) {
        this.updateShow(val)
      }
    }
  }
}
</script>

En comparación con los eventos de monitoreo, hay una capa adicional de encapsulación de atributos de cálculo, pero también se despide para advertir

@pzxbc Brillante: smiley:

@pzxbc Descubrí que enviar una mutación para modificar el valor de getshow y luego calcular el atributo que se muestra pasará el valor al valor de presentación interno del componente emergente para cambiar el estado del componente. Lo anterior es lo que necesito, pero descubrí que el siguiente atributo de cálculo que se muestra llamará a la función this.updateShow obligado a establecer, porque uso console.log para encontrar que mutaion se llama dos veces.

Mi enfoque es:

      set: function (val) {
        if (val === false){
          this.updateAlert(val)
        }
      }
¿Fue útil esta página
0 / 5 - 0 calificaciones