javascript - 使用扩展运算符作为参数

标签 javascript reactjs ecmascript-6

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语法是因为codelastUpdatequeryCount的值只有在code时才需要传给对象可用。所以基本上 ...code && { code, lastUpdated, queryCount } 将返回 code, lastUpdated, queryCountcode 被评估为 true。因此你的整个对象将变成

 {
    isFinished,
    isPending ,
    code,
    lastUpdated,
    queryCount 
 }

关于javascript - 使用扩展运算符作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713520/

相关文章:

javascript - 如何为每个具有附加数字的 id 的元素使用 Javascript 函数

javascript - 使用 Key 访问 Javascript 对象

javascript - 回调嵌套和 this 的范围

reactjs - 以 2 位数字显示计时器而不是一个 react-timer-hook

css - 为什么 css hover 只影响书签?

javascript - 将 async 函数的值设置为 .then 的返回值

javascript - React Native,NavigatorIOS,undefined 不是一个对象(评估 'this.props.navigator.push')

javascript - 在 React 中将 D3 图表调整为父级

Javascript - 循环遍历具有数组属性的对象

Javascript:如何跟踪 div 的绝对位置(顶部/左侧)?