Tengo una lista de filtros quiero aplicar a un objeto json.

Mi mutaciones este aspecto:

const mutations = {
    setStars(state, payload) {
        state.stars = payload;
        this.dispatch('filter');
    },

    setReviews(state, payload) {
        state.reviews = payload;
        this.dispatch('filter');
    }
};

Debido a cómo funcionan los filtros necesito volver a aplicar a todos de nuevo, ya que no puede simplemente mantener downfiltering una lista porque este me mete en problemas cuando un usuario de-selecciona una opción de filtro.

Así que, cuando una mutación se realiza a una de las estrellas de filtro o revisiones de filtro(el usuario es el filtrado) tengo que llamar a una función que se ejecuta todos mis filtros.

¿Cuál es mi opción más fácil aquí? Puedo añadir algún tipo de función auxiliar o posible establecer una acción que llama a las mutaciones que en realidad el filtro de mis resultados?

  • Cuando usted necesita devolver un filtrado de los datos, no hay necesidad de mutar su almacenamiento. Mantener intactos sus datos y crear un captador que devuelve los datos filtrados, con 2 captadores (1 para cada caso) o un solo captador de que acepta un argumento (condición de filtro). Relacionadas con la lectura: vuex.vuejs.org/en/getters.html
  • Yo estaría de acuerdo con usted si fuera sólo un filtro, pero tengo que aplicar varios filtros a la vez para un único valor. Así que no puedo usar solo 1 o 2 de los captadores por separado. Necesitan trabajar juntos.
  • Un captador puede llamar a otra persona de acción.
  • cierto, pero yo tendría ningún captador para llamar a todos los otros getter que es un filtro y hacer esto para todos los captadores. Sería un poco lioso muy rápido. Tal vez yo no veo lo que quieres decir, pero gracias por la sugerencia de todas formas!
  • He aquí a lo que me refiero básicamente: jsfiddle.net/wostex/u2yoLgLb
  • La clasificación parece un concepto diferente. Con un filtro tengo que hacer por lo menos una mutación a mi tienda porque mi tienda necesita saber qué elementos necesitan ser filtrados. Gracias por su ejemplo, sin embargo, siempre ayuda.
  • El filtro es la misma cosa: jsfiddle.net/wostex/u2yoLgLb/1 buscar un campo de búsqueda. Lo que estoy tratando de decir es que usted realmente no necesita mutar algo que en la mayoría de los casos, cuando se necesita un filtro (sólo por Vuex diseño, no es necesario, sin embargo). Esto es cómo usted puede conservar los datos para uso futuro, cuando el usuario borra los filtros, por ejemplo. Es mejor, en mi opinión, para filtrar dentro de un mismo componente o con un captador. Encadenado filtros pueden ser más fáciles de implementar en un mismo componente con los métodos. Quizá su aplicación es totalmente diferente, aunque, no sé.

InformationsquelleAutor Stephan-v | 2017-06-01

1 Comentario

  1. 29

    Mutaciones no pueden envío de otras acciones, pero las acciones pueden envío otras acciones. Así que una opción es tener una acción cometer la mutación, a continuación, activar la acción del filtro.

    Otra opción, si es posible, sería tener todos los filtros ser getters que naturalmente reaccionar a los cambios de datos como un calculada propiedad.

    Ejemplo de acciones de llamar a otras acciones:

    //store.js
    export default {
      mutations: {
        setReviews(state, payload) {
          state.reviews = payload
        }
      }
    
      actions: {
        filter() {
          //...
        }
    
        setReviews({ dispatch, commit }, payload) {
          commit('setReviews', payload)
          dispatch('filter');
        }
      }
    }
    
    
    //Component.vue
    import { mapActions } from 'vuex';
    
    export default {
      methods: {
        ...mapActions(['setReviews']),
        foo() {
          this.setReviews(...)
        }
      }
    }
    • Así con cada mutación tengo que hacer, tengo que llamar a un despacho inmediatamente después de mi Vue componentes? Puesto que yo no soy capaz de llamar a una acción de una mutación dentro de mi Vuex tienda?
    • me gustaría realmente tener los componentes de la expedición de un setReviews acción en lugar de de una mutación. El acción puede tanto la confirmación de la setReviews mutación y desencadenar la filter acción.
    • Hace sentido. ¿Cómo puedo llamar correctamente a otra acción de una acción dentro de mi Vuex de la tienda, aunque?
    • las acciones de recibir context como primer parámetro, el cual contiene un dispatch función que se puede utilizar. He actualizado mi post con un rápido, no probados ejemplo
    • Muchas gracias hombre!!!

Dejar respuesta

Please enter your comment!
Please enter your name here