Vuex реактивные mapGetters с аргументами, переданными через - PullRequest
0 голосов
/ 09 января 2019

У меня много получателей, которые передают в хранилище аргументы, такие как:

this.$store.getters['getSomeThing'](this.id)

И я не нахожу рекомендаций по оптимальному использованию mapGetters для поддержания реактивности при передаче аргументов. Одно предложение, которое я нашел, состояло в том, чтобы сопоставить получатель и затем передать аргумент в mount:

computed: {  
  ...mapGetters([
    'getSomeThing'
  ])
},
mounted () {
  this.getSomeThing(this.id)
}

Это действительно кажется неоптимальным, так как он будет проверять только изменение состояния при подключении. Любые предложения о том, как лучше поддерживать реактивность при передаче аргумента получателю? Вот пример метода получения, который соответствует приведенному выше коду:

getSomeThing: (state) => (id) => {
  return state.things.find(t => { return t.id === id })
}

1 Ответ

0 голосов
/ 09 января 2019

Вот фрагмент из моего проекта:

    computed: {
        ...mapGetters('crm', ['accountWithId']),
        account() {
            return this.accountWithId(this.$route.params.id)
        }
    },

Это делает this.account реактивным и зависит от параметра.

Итак ...

computed: {  
  ...mapGetters([
    'getSomeThing'
  ]),
  thing() {
    return this.getSomeThing(this.id)
  }
},
...