2017-12-10 5 views
1

私はこれのような何かをする方法がありますか?if文の中でどういうわけかdestructuringを使うことができますか?

if({color, size, shape} = this.props){ 
    console.log('Received all props!'); 
} else { 
    console.log('There are some missing props'); 
} 

は、私は私のコンポーネントの小道具、 経由して、エラーをスローしない場合は、必要なすべてのデータを受け取ったかどうかを知りたいです。

再利用可能なコンポーネントを作成するためのものです。

+0

それは構文的に有効だが、それはあなたがやりたいことはありません。 – Bergi

+0

あなたはそのような複数のプロパティの真実性を確認することはできません –

+1

なぜあなたは、単に前に小道具を抽出し、通常のヴァルスのようにチェックしないのですか?私はあなたが提案された方法を使って何を得るのか分かりません... – Coluccini

答えて

4

あなたはデフォルト値を使用することができます

function missing(prop) { 
    throw new TypeError(`there is a missing ${prop} property`); 
} 

… 
try { 
    const { 
    color = missing("color"), 
    size = missing("size"), 
    shape = missing("shape"), 
    } = this.props; 
    // use color, size, shape here 
    console.log("Received all props!"); 
} catch(err) { 
    console.log(err.message); 
} 

ifステートメントを使用するには、noあなたはすべてのプロパティがあるかどうかをブール値を生成するために非構造を使用することはできません。むしろ(、まだまたはより良いあなたが期待される値の種類をチェックする)

if ("color" in this.props && "size" in this.props && "shape" in this.props) { 
    console.log('Received all props!'); 
} else { 
    console.log('There are some missing props'); 
} 

いつものように何かを

関連する問題