2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								id: 5a24c314108439a4d4036184
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								title: Render with an If-Else Condition
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								challengeType: 6
							 
						 
					
						
							
								
									
										
										
										
											2019-08-05 09:17:33 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								forumTopicId: 301410
							 
						 
					
						
							
								
									
										
										
										
											2021-01-13 03:31:00 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								dashedName: render-with-an-if-else-condition
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-27 19:02:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --description--
 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-27 19:02:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								Another application of using JavaScript to control your rendered view is to tie the elements that are rendered to a condition. When the condition is true, one view renders. When it's false, it's a different view. You can do this with a standard `if/else`  statement in the `render()`  method of a React component.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --instructions--
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								MyComponent contains a `boolean`  in its state which tracks whether you want to display some element in the UI or not. The `button`  toggles the state of this value. Currently, it renders the same UI every time. Rewrite the `render()`  method with an `if/else`  statement so that if `display`  is `true` , you return the current markup. Otherwise, return the markup without the `h1`  element.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								**Note:** You must write an `if/else`  to pass the tests. Use of the ternary operator will not pass here.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# --hints--
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								`MyComponent`  should exist and render.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								assert(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  (function () {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    const mockedComponent = Enzyme.mount(React.createElement(MyComponent));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return mockedComponent.find('MyComponent').length === 1;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  })()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								When `display`  is set to `true` , a `div` , `button` , and `h1`  should render.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								async () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const waitForIt = (fn) =>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const mockedComponent = Enzyme.mount(React.createElement(MyComponent));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const state_1 = () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    mockedComponent.setState({ display: true });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return waitForIt(() => mockedComponent);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const updated = await state_1();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  assert(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    mockedComponent.find('div').length === 1 & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      mockedComponent.find('div').children().length === 2 & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      mockedComponent.find('button').length === 1 & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      mockedComponent.find('h1').length === 1
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								When `display`  is set to `false` , only a `div`  and `button`  should render.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								async () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const waitForIt = (fn) =>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const mockedComponent = Enzyme.mount(React.createElement(MyComponent));
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const state_1 = () => {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    mockedComponent.setState({ display: false });
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return waitForIt(() => mockedComponent);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  };
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  const updated = await state_1();
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  assert(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    mockedComponent.find('div').length === 1 & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      mockedComponent.find('div').children().length === 1 & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      mockedComponent.find('button').length === 1 & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      mockedComponent.find('h1').length === 0
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								The render method should use an `if/else`  statement to check the condition of `this.state.display` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								(getUserInput) =>
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  assert(
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    getUserInput('index').includes('if') & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      getUserInput('index').includes('else')
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  );
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-27 19:02:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --seed--
 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-27 19:02:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								## --after-user-code--
 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-27 19:02:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```jsx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ReactDOM.render(< MyComponent  / > , document.getElementById('root'))
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								## --seed-contents--
 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```jsx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								class MyComponent extends React.Component {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  constructor(props) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    super(props);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    this.state = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      display: true
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    this.toggleDisplay = this.toggleDisplay.bind(this);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  toggleDisplay() {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-11 22:42:27 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    this.setState((state) => ({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      display: !state.display
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }));
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  render() {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 09:53:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // Change code below this line
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         < button  onClick = {this.toggleDisplay} > Toggle Display< / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         < h1 > Displayed!< / h1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								       < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-27 19:02:05 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								# --solutions--
 
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-07-13 18:58:50 +02:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								```jsx
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								class MyComponent extends React.Component {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  constructor(props) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    super(props);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    this.state = {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      display: true
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
									
										
										
										
											2018-10-08 01:01:53 +01:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 this.toggleDisplay = this.toggleDisplay.bind(this);
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								 }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  toggleDisplay() {
							 
						 
					
						
							
								
									
										
										
										
											2020-08-11 22:42:27 +05:30 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    this.setState((state) => ({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      display: !state.display
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }));
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  render() {
							 
						 
					
						
							
								
									
										
										
										
											2020-09-15 09:53:25 -07:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								    // Change code below this line
							 
						 
					
						
							
								
									
										
										
										
											2018-09-30 23:01:58 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								    if (this.state.display) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								           < button  onClick = {this.toggleDisplay} > Toggle Display< / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								           < h1 > Displayed!< / h1 > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    } else {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								        < div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								           < button  onClick = {this.toggleDisplay} > Toggle Display< / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								         < / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								      );
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								};
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								```