Деструктуризация объектов

Пытаюсь постичь магию Vuex. Нахожу фрагмент документации:

actions: {
    increment(context) {
      context.commit('increment');
    }
  }

Далее сказано: " На практике для упрощения кода часто используется деструктуризация аргументов из ES2015 (особенно при необходимости многократного вызова commit ):" и приводится аналог выше написанного кода:

actions: {
  increment ({ commit }) {
    commit('increment')
  }
}

И здесь меня заклинивает: перечитав про деструктуризацию, я понимаю, что присваивание в переменные идёт по порядку. Т.е. ключу commit в ({ commit }) будет присвоено значение первого свойства объекта context. Смотрю в документации, из чего состоит context:

{
  state,       // то же, что и `store.state`, или локальный state при использовании модулей
  rootState,   // то же, что и `store.state`, только при использовании модулей
  commit,      // то же, что и `store.commit`
  dispatch,    // то же, что и `store.dispatch`
  getters,     // то же, что и `store.getters`
  rootGetters; // то же, что и `store.getters`, только в модулях
}

и никак не пойму, почему в неё попадает нужный нам метод commit, т.к. он совсем не первый в context по порядку…

Потому что по порядку, это у массива. И скобки там другие. А у тебя объект

https://learn.javascript.ru/destructuring#destrukturizatsiya-obekta

1 лайк

Спасибо большое! Действительно. Просто подавляющее большинство примеров - с соответствием по порядку, и нигде не акцентируется момент, который вызвал у меня затруднение. Соответственно, можно взглядом проскочить. :)