我在redux-connect库中遇到了这段代码,我想知道是否可以将一个函数作为密钥放在ES6中的计算密钥中。这是如何工作以及javascript如何解释的?
export const reducer = handleActions({
[beginGlobalLoad]: state => ({
...state,
loaded: false,
}),
[endGlobalLoad]: state => ({
...state,
loaded: true,
})
....
}
with beginGlobalLoad是由
创建的函数export const beginGlobalLoad = createAction('@redux-conn/BEGIN_GLOBAL_LOAD');
我读过动态计算密钥的概念,但没有说明使用该函数作为属性的关键字。
非常感谢您的回答
图书馆的链接:https://github.com/makeomatic/redux-connect/blob/master/modules/store.js
答案 0 :(得分:4)
没有。属性键必须是字符串或符号。如果你使用一个函数,它将像任何其他对象一样被字符串化,而这通常不是你想要的。
然而,createAction
docs具体说明了
createAction
在handleAction
或handleActions
中用作类型时也会返回其类型。
他们通过overwriting toString
实现的目标。