76 lines
2.4 KiB
Markdown
76 lines
2.4 KiB
Markdown
|
---
|
||
|
title: Use && for a More Concise Conditional
|
||
|
---
|
||
|
## Use && for a More Concise Conditional
|
||
|
The example given is
|
||
|
```
|
||
|
{condition && <p>markup</p>}
|
||
|
```
|
||
|
which is demonstrated below using the condition of the this.state.dinnerCooked boolean.
|
||
|
If the boolean is true the markup included in the {} with the condition will display, if not it will not display
|
||
|
|
||
|
```
|
||
|
class MyComponent extends React.Component {
|
||
|
constructor(props) {
|
||
|
super(props);
|
||
|
this.state = {
|
||
|
dinnerCooked: true
|
||
|
}
|
||
|
}
|
||
|
render() {
|
||
|
return (
|
||
|
<div>
|
||
|
{this.state.dinnerCooked &&<h1>Dinner is Cooked!</h1>}//h1 tag contents will be displayed
|
||
|
</div>
|
||
|
);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
## Hint:
|
||
|
|
||
|
You don't have to do a full ```if/then``` statement. Just write the condition you are checking.
|
||
|
|
||
|
## Solution:
|
||
|
|
||
|
As you can see, you don't have to write the full ```if/then``` statement. We only need to check the condition and see if it returns ```true``` or ```false```. In this case, we are checking the value of ```display```. If the value is ```true```, then you return the value to the right of ```&&```, which is ```<h1>Displayed!</h1>```. If the condition is ```false```, it returns nothing.
|
||
|
|
||
|
```jsx
|
||
|
class MyComponent extends React.Component {
|
||
|
constructor(props) {
|
||
|
super(props);
|
||
|
this.state = {
|
||
|
dinnerCooked: false
|
||
|
}
|
||
|
}
|
||
|
render() {
|
||
|
return (
|
||
|
<div>
|
||
|
{this.state.dinnerCooked &&<h1>Dinner is Cooked!</h1>}//h1 tag contents will NOT be displayed
|
||
|
display: true
|
||
|
}
|
||
|
this.toggleDisplay = this.toggleDisplay.bind(this);
|
||
|
}
|
||
|
toggleDisplay() {
|
||
|
this.setState({
|
||
|
display: !this.state.display
|
||
|
});
|
||
|
}
|
||
|
render() {
|
||
|
// change code below this line
|
||
|
return (
|
||
|
<div>
|
||
|
<button onClick={this.toggleDisplay}>Toggle Display</button>
|
||
|
{this.state.display && <h1>Displayed!</h1>}
|
||
|
</div>
|
||
|
);
|
||
|
}
|
||
|
};
|
||
|
```
|
||
|
Explanation from [ReactJS.org documentation](https://reactjs.org/docs/conditional-rendering.html)
|
||
|
|
||
|
You may embed any expressions in JSX by wrapping them in curly braces. This includes the JavaScript logical && operator. It can be handy for conditionally including an element
|
||
|
|
||
|
It works because in JavaScript, true && expression always evaluates to expression, and false && expression always evaluates to false.
|
||
|
|
||
|
Therefore, if the condition is true, the element right after && will appear in the output. If it is false, React will ignore and skip it.
|