es6 hash array index вызов функции смешанный синтаксис
Что это за синтаксис ES6?
{
[ActionTypes.Repo](state, { username, res }) {
/* ... */
},
[ActionTypes.Repo2](state, { username, res }) {
/* ... */
}
Взято из : https://github.com/quangbuule/redux-example/blob/master/src/js/reducers/Repo.js
1 ответ:
Это определения методов , вычисляемые имена свойств идеструктурирование в работе.
Определения методов предоставляют краткий способ создания свойств, содержащих функции:
// before var obj = { foo: function() {} }; // now var obj = { foo() {} };
Это тот же синтаксис для создания методов в определениях
class
.Вычисляемые свойства позволяют использовать результат любого выражения в качестве имени свойства в объектном литерале :
var foo='somePropertyName'; // before var obj = {}; obj[foo] = 42; // now var obj = { [foo]: 42 };
И, конечно, это тоже работает с определениями методов:
var obj = { [foo]() {} };
Деструктурирование подобно сопоставлению шаблонов и облегчает обращение к вложенным свойствам массива / объекта, если это все, что вам нужно:
// before function foo(obj) { var username = obj.username; var res = obj.res; } // now function foo({username, res}) { }