在return withDefaultStatus(...)
中使用扩展运算符作为参数有什么意义?
我已经盯着这段代码看了一段时间了,但我想不通。
起初我以为它被用作条件,但现在我完全糊涂了。
PS1:我不认为它与 lodash 有任何关系,但我还是添加了它。
PS2:状态正在从 React 组件传递。
const {defaults} = require('lodash/fp')
const withDefaultStatus = defaults({
isFinished: false,
isPending: true,
code: 0
});
const state = {
isFinished: true,
isMutation: false,
isPending: false,
lastUpdated: 1512730452993,
queryCount: 5,
status: 1,
url: "https://",
}
function selectQueryStatus(state) {
const {
isFinished,
isPending,
status: code,
lastUpdated,
queryCount
} = state || {};
return withDefaultStatus({
isFinished, isPending , ...code && { code, lastUpdated, queryCount }
});
}
console.log(selectQueryStatus(state))
//output { isFinished: true, isPending: false, code: 1, lastUpdated: 512730452993, queryCount: 5 }
最佳答案
在下面的语法中
withDefaultStatus({
isFinished, isPending , ...code && { code, lastUpdated, queryCount }
});
之所以使用Spread语法是因为code
、lastUpdate
和queryCount
的值只有在code时才需要传给对象可用。所以基本上 ...code && { code, lastUpdated, queryCount }
将返回 code, lastUpdated, queryCount
当 code
被评估为 true
。因此你的整个对象将变成
{
isFinished,
isPending ,
code,
lastUpdated,
queryCount
}
关于javascript - 使用扩展运算符作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713520/