2017-12-08 14 views
1

return withDefaultStatus(...)のスプレッド演算子をパラメータとして使用する点は何ですか?スプレッド演算子をパラメータとして使用する

私は今このコードを見て、しばらくの間突っ込んできました。私は何かを理解できません。
まず、私はそれが状態として使用されていると思ったが、今は完全に混乱している。

PS1:ロダッシュとは関係ないと思いますが、とにかく追加しました。
PS2:状態がリアクションコンポーネントから渡されています。次の構文

withDefaultStatus({ 
     isFinished, isPending , ...code && { code, lastUpdated, queryCount } 
    }); 

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 } 
+1

@ ShubhamKhatriになります。これはなぜ偽装として閉じられましたか? OPはなぜ**スプレッドが使用されているかを尋ねています。彼は「3つのドット」をスプレッドオペレータと認識していたので、それでなぜポストに「...」と尋ねるのですか? – Chris

+0

@Chris、投稿は説明していますが、なぜそれがあるのか​​答えてくれるのですか?あなたが同意しない場合、私は重複投票を削除します –

+0

@ShubhamKhatriうーん、私はそれが本当にないと思う。とにかく、投稿を投稿するときは投稿を別の投稿にリンクしないでください。あなた自身の答えを見やすくすることができますが、代わりに標準的な答えを使用してください。 – Chris

答えて

2

codelastUpdatequeryCount値はコードが利用可能である場合にのみ、オブジェクトに渡す必要がある、ので、スプレッド構文が使用されている理由です。したがって、本質的に…code && { code, lastUpdated, queryCount }は、codetrueと評価されたときにcode, lastUpdated, queryCountを返します。したがって、オブジェクト全体は

{ 
    isFinished, 
    isPending , 
    code, 
    lastUpdated, 
    queryCount 
} 
+0

探偵ありがとう!それは私の最初の考えだった。しかし、コードが整数である場合、どのようにコードを 'true'に評価することができますか?それが 'undefined 'でなければ' true'と評価されるということですか? –

+0

未定義またはnullでない場合 –

関連する問題