I'm trying to make a signal bar which depending on the number of strength (1-3) will display the corresponding number of bars in black (activated) otherwise in grey colour. So in React i have used the following:
class Application extends React.Component {
signalBar{
switch(this.props.signal-strength) {
case 1:
< className={{'first-bar, signal-bars, bar'}} style={{display: 'block', color 'black'}}>
< className={{'second-bar, signal-bars, bar'}} style={{display: 'block', color 'grey'}}>
< className={{'third-bar, signal-bars, bar'}} style={{display: 'block', color 'grey'}}>
break;
case 2:
< className={{'first-bar, signal-bars, bar'}} style={{display: 'block', color 'black'}}>
< className={{'second-bar, signal-bars, bar'}} style={{display: 'block', color 'black'}}>
< className={{'third-bar, signal-bars, bar'}} style={{display: 'block', color 'grey'}}>
case 3:
< className={{'first-bar, signal-bars, bar'}} style={{display: 'block', color 'black'}}>
< className={{'second-bar, signal-bars, bar'}} style={{display: 'block', color 'black'}}>
< className={{'third-bar, signal-bars, bar'}} style={{display: 'block', color 'black'}}>
break;
default:
< className={{'first-bar bar'}} style={{display: 'block', color 'grey'}}>
< className={{'second-bar bar'}} style={{display: 'block', color 'grey'}}>
< className={{'third-bar bar'}} style={{display: 'block', color 'grey'}}>
}
}
render() {
return <div className={{sizing-box}}>
<div className={{signal-bars, bar}}>
{this.signalBar}
</div>
</div>
<p>
</p>
</div>;
}
}
React.render(<Application />, document.getElementById('app'));
CSS:
html, body
height: 100%
body
background: #333
display: flex
justify-content: center
align-items: center;
{ box-sizing: border-box; }
.sizing-box {
height: 50px;
width: 80px;
}
.signal-bars {
display: inline-block;
}
.signal-bars .bar {
width: 14%;
margin-left: 1%;
min-height: 20%;
display: inline-block;
}
.signal-bars .first-bar { height: 30%; }
.signal-bars .second-bar { height: 60%; }
.signal-bars .third-bar { height: 90%; }
The value of signal-strength is not static and can change depending on pros from the parent element. The error i'm getting is 'this is a reserved word'. How can someone inject the function 'signalBar' in a React element? Is there a more 'simple' way to do this with less coding in switch condition?