LINUX.ORG.RU

Массив как ключ объекта ?

 


0

1

В примере использования библиотеки redux-actions встретился код:

const increment = createAction('INCREMENT');
const decrement = createAction('DECREMENT');


const { createAction, handleActions } = window.ReduxActions;

const reducer = handleActions(
  {
    [increment]: state => ({ ...state, counter: state.counter + 1 }),
    [decrement]: state => ({ ...state, counter: state.counter - 1 })
  },
  defaultState
);

Почему ключем объекта выступает массив функции ?


Как на счёт изучить язык перед тем как задавать вопросы? Это не массив, это вычисляемый ключ (computed property).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

Это не массив, и такой синтаксис для вычисляемых ключей практически везде используется. Ты бы хоть Object.keys() этого объекта и значение increment чекнул, прежде чем нести куда-то эти выдумки.

anonymous
()

createAction возвращает функцию, но у неё переопределён метод toString: https://github.com/redux-utilities/redux-actions/blob/master/src/createAction.js#L44 Поэтому при вычислении имени поля объекта ({[increment]:...}) там подставляется строковой ключ, а не исходник функции, как происходило бы по-умолчанию.

static_lab ★★★★★
()
Ответ на: комментарий от static_lab

это чистый js

но у неё переопределён метод toString()

thx. 100 лет живи, 100 лет учись, а всё равно ламером умерать :-)

vtVitus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.