我正在阅读以下内容:https://github.com/pburtchaell/redux-promise-middleware/blob/master/src/index.js
我知道...
被用作对象传播。我知道!!
用于将任何内容转换为具有相同真实性的 bool 值。
然而,知道这是什么,当它们像...!!
放在一起时是什么意思?我在这里无法理解最后一行:
{
...resolveAction,
...isAction(rejected) ? rejected : {
...!!rejected && { payload: rejected }
}
...resolveAction
只是传播resolveAction
的 key 。 ...isAction(rejected) ?
将检查rejected
是否解决了某个 Action ,然后将其传播。 (也不知道这一点)rejected
添加到对象{...!!rejected && { payload: rejected }
???????????????? ...!!
甚至是有效的语法如何?有两种选择:!!
将应用于所有扩展键!!
,则它是一个 bool 值,无法传播。 所以这没有任何意义,还是我错过了一些东西,因为给出了该代码,我认为它正在尝试散布 bool 值。
最佳答案
好的,所以在下载了npm模块并浏览了转码后,我发现了这一行:
return dispatch(isThunk(rejected) ? rejected.bind(null, resolveAction) : _extends({}, resolveAction, isAction(rejected) ? rejected : _extends({}, !!rejected && { payload: rejected })));
其中相关部分在这里:
_extends({}, !!rejected && { payload: rejected })
基本上,如果
!!rejected
为true,那么它将把有效负载散布到对象中。如果不是_extends({}, false)
,则仅返回{}
。这项工作的关键是
...
的优先级比整行中的其他任何运算符都要低。考虑到这一点,您就可以开始理解它了。