2017-01-25 13 views
1

2つの属性を2つの小道具:aria-hiddenaria-labelに接続しました。
aria-hiddenが真の場合は、それだけが表示されます。偽の場合はaria-labelと表示されます。リアクション - 属性を動的に作成する方法

私はこのコードを書いていますが、DRYではありません...どうすれば改善できますか?

render() { 
    let svgMarkup = ''; 

     if (this.props.hidden) { 
      svgMarkup = (
       <svg role="img" aria-hidden="true"> 
        ... 
       </svg> 
      ); 
     } else { 
      svgMarkup = (
       <svg role="img" aria-label={ this.props.label }> 
        ... 
       </svg> 
      ); 
     } 

     return svgMarkup; 
} 

答えて

5

次に、あなたのスプレッド構文を使用してコンポーネントを反応させる小道具を適用し、プレーンなオブジェクトの小道具を設定することができます。

render() { 
    const ariaProps = this.props.hidden ? 
     { 'aria-hidden': 'true' } 
     : 
     { 'aria-label': this.props.label }; 

    return (
     <svg role="img" {...ariaProps}> 
      ... 
     </svg> 
    ); 
} 
+0

すごいです!私は似たようなことをしようとしていましたが、「...」の部分では失敗しました。ありがとう! –

+1

心配しないで、喜んで助けてください!はい、その普及業者は便利です! –

関連する問題