Как именно синтаксис распространения (...) работает с mapGetters?

Всякий раз, когда вы хотите использовать вычисленный метод получения с помощником mapGetter из Vuex, вы должны использовать его следующим образом:

...mapGetters([
    'getter1', 
    'getter2', 
    'etc'
])

Я видел оператор распространения, использовавшийся ранее для расширения массивов, которые будут использоваться в качестве аргументов функции, но не перед методом, как мы видим здесь на примере mapGetters.

Я не могу найти примеры этого синтаксиса, например, при просмотре документации Mozilla:

https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Operators/Spread_operator

Там ничего нет Как именно работает этот синтаксис и этот случай, и может ли кто-нибудь предоставить некоторую документацию по этому вопросу, возможно?

Ответ 1

mapGetters и mapActions являются в основном помощником, предоставляемым vuex, который возвращает объект с ключами в качестве имен методов и значениями в качестве методов с некоторым определенным определением. Этот объект в сочетании с... (оператор распространения объекта) распространяет его на отдельные функции в вычисляемом объекте или объекте методов соответственно.

Например:-

{
    computed: {
        ...mapGetters([
            'getter1',
            'getter2',
            'getter3'
        ]);
    }
}

{
    computed: {
        getter1() {
            return this.$store.getters.getter1;
        },
        getter2() {
            return this.$store.getters.getter2;
        },
        getter3() {
            return this.$store.getters.getter3;
        },
    }
}

Оба из вышеупомянутых идентичны, так что в основном это несколько возвращает объект определений {getter1, getter2, getter3} и разделяется на отдельные вычисляемые свойства с тем же именем.

Вы также можете обратиться к этим URL-адресам:

https://www.youtube.com/watch?v=SaBnaGu7cP8&list=PL4cUxeGkcC9i371QO_Rtkl26MwtiJ30P2&index=8

https://vuex.vuejs.org/en/getters.html

Ответ 2

Я пытаюсь уточнить ответ Val с деталями, которые, как я чувствую, были опущены. В вашем примере оператор распространения не используется "перед методом". То, что на самом деле происходит, это применяется к результату mapGetters

Вы можете думать об этом так:

{
    ...{
        getter1: /* a mapped fn from vuex store */,
        getter2: /* a mapped fn from vuex store */,
    }
}

Вы можете прочитать документацию, предоставленную Val Cajes Luminarias, для получения более подробной информации о том, как оператор распространения работает с объектными литералами. https://developer.mozilla.org/nl/docs/Web/JavaScript/Reference/Operators/Spread_operator