m0m*_*eni 6 javascript ecmascript-6
我正在读这篇文章:https://github.com/pburtchaell/redux-promise-middleware/blob/master/src/index.js
我知道它...被用作对象传播.我知道这!!用于将任何东西转换为具有相同真实性的布尔值.
但是知道这些,当它们组合在一起时它们意味着什么...!!?我无法理解最后一行:
{
...resolveAction,
...isAction(rejected) ? rejected : {
...!!rejected && { payload: rejected }
}
Run Code Online (Sandbox Code Playgroud)
...resolveAction只是传播键resolveAction....isAction(rejected) ?将检查是否rejected解决了一个动作然后将其传播.(也不确定这一个)rejected如果为true,则添加到object{...!!rejected && { payload: rejected } ????????????????怎么...!!连有效的语法?有两种选择:
如果它首先传播对象,则将!!应用于所有传播键
如果!!首先应用它,它是一个布尔值,它不能传播.
所以它没有任何意义,或者我错过了一些东西,因为给定代码,我假设它试图传播一个布尔值.
好的,下载 npm 模块并查看转译代码后,我发现了这一行:
return dispatch(isThunk(rejected) ? rejected.bind(null, resolveAction) : _extends({}, resolveAction, isAction(rejected) ? rejected : _extends({}, !!rejected && { payload: rejected })));
Run Code Online (Sandbox Code Playgroud)
其中相关部分在这里:
_extends({}, !!rejected && { payload: rejected })
Run Code Online (Sandbox Code Playgroud)
基本上,如果!!rejected为真,那么它将把有效负载传播到对象中。如果不只是_extends({}, false)回报的话{}。
这项工作的关键是它的...优先级低于整条生产线中的任何其他运算符。记住这一点,您就可以开始理解它了。
| 归档时间: |
|
| 查看次数: |
234 次 |
| 最近记录: |