2017-07-11 4 views
2

この条件文はどのように単純化できますか? return文が複数回使用されています。この場合、例えば三項演算子を使用できますか?変数を返すときにif文の代わりに三項演算子を使用

コンポーネントを非表示にするにはnullを返すのが適切ですか?

import Item from './Item'; 

const Component = ({data, onChange}) => { 

    if (data) { 
     const items = data.map((item) => { 
      return <Item onChange={ onChange } /> 
     }); 

     return(
      <ul>{items}</ul> 
     ); 

    } else { 
     return(null); 
    } 
} 

export default Component; 
+0

早く戻ります。 elseから戻り値を取り出し、 'if(!data)'の中の一番上に貼り付けて、他のif文を削除します。 – evolutionxbox

+0

簡体字?ほとんど。短縮された?もちろん、いつものように。 – Bergi

答えて

4

コンポーネントを非表示にするには、ヌル適切な方法を返していますか?

はい、nullを返すのは、Reactコンポーネントの有効な戻り値です。公式ドキュメントのthis sectionを参照してください:

falsenullundefined、およびtrueが有効な子ども

ブール値、ヌル、および未定義は無視されています。彼らは単にレンダリングしません。


あなたは少ししかし、あなたのコードを短縮できます。

const Component = ({data, onChange}) => (
    data && data.length ? <ul> 
    {data.map((item) => <Item onChange={ onChange } />)} 
    </ul> : null 
) 

注意をしかし、あなたが<Item>itemを使用していないこと。それは意図的なのでしょうか?そうであれば、代わりに次のように書くことができます。{data.map(() => <Item onChange={ onChange } />)}

<Item>にはkeyプロパティを指定する必要があります。私はそれを自分のスニペットに追加していませんが、key小物hereについて詳しく読むことができます。

+0

単一のパラメータ関数なので、項目の周りの括弧も削除することができます。また、矢印機能でブロックを使用していない場合は、returnキーワードを削除することもできます。 – Kraylog

+0

@ NimrodArgov、はい私は 'return'を見逃しました。ありがとうございました。私はかっこを保つのが好きですが、それは単なる個人的な好みです。 – Chris

2

私はそれを実行しませんでしたので、どこかにバグがあるかもしれませんが、このようなものが適していますか?

const Component = ({data, onChange}) => { 

    function returnItems(data){ 
    data.map((item) => <Item onChange={ onChange } /> 
    return(<ul>{items}</ul>); 
    } 

    const items = data ? returnItems(data) : null; 
}