Lets Encrypt SSL Error: The client lacks sufficient authorization 403 Forbidden
This is due to our web server are configured to deny accessing this directory…
June 23, 2020
In this post, I will show several ways to use conditionals while rendering html or component in jsx.
Consider we have a component, and based on a boolean flag we want to show or hide a paragraph
Below is a small component which receives props having book name and author name. Lets not concentrate on how the whole app works. We want to focus on conditional rendering.
import React, { Component } from 'react'
export default class Book extends Component {
constructor(props) {
super(props);
this.state = {
show: false
};
}
toggleInfo = () => {
this.setState({show: !this.state.show});
}
render() {
const {book, author} = this.props.info;
return (
<article>
<h3>book: {book}</h3>
<h5>author: {author}</h5>
</article>
)
}
}
Lets include a button in this component, and on click lets toggle show or hide a paragraph.
import React, { Component } from 'react'
export default class Book extends Component {
constructor(props) {
super(props);
this.state = {
show: false
};
}
toggleInfo = () => {
this.setState({show: !this.state.show});
}
render() {
const {book, author} = this.props.info;
return (
<article>
<h3>book: {book}</h3>
<h5>author: {author}</h5>
<button type="button" onClick={this.toggleInfo}>Toggle Paragraph</button>
{
this.state.show && <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsam, nobis!</p>
}
</article>
)
}
}
toggleInfo is self explanatory. We are just toggling a boolean flag in component’s state. In render() method, we are checking that boolean flag and showing the paragraph if this flag is true. Simple enough.
import React, { Component } from 'react'
export default class Book extends Component {
constructor(props) {
super(props);
this.state = {
show: false
};
}
toggleInfo = () => {
this.setState({show: !this.state.show});
}
render() {
const {book, author} = this.props.info;
return (
<article>
<h3>book: {book}</h3>
<h5>author: {author}</h5>
<button type="button" onClick={this.toggleInfo}>Toggle Paragraph</button>
{
this.state.show ?
(<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsam, nobis!</p>)
: null
}
</article>
)
}
}
Rest of the code is same. Note the ternary operator which is quite easy to understand.
We can define a method(function) in the component which will take this decision whether to show the paragraph or not.
import React, { Component } from 'react'
export default class Book extends Component {
constructor(props) {
super(props);
this.state = {
show: false
};
}
toggleInfo = () => {
this.setState({show: !this.state.show});
}
toShow = () => {
if (this.state.show) {
return <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Ipsam, nobis!</p>;
}
else {
return null;
}
}
render() {
const {book, author} = this.props.info;
return (
<article>
<h3>book: {book}</h3>
<h5>author: {author}</h5>
<button type="button" onClick={this.toggleInfo}>Toggle Paragraph</button>
{this.toShow()}
</article>
)
}
}
These three methods are simple to use, and you can use anyone.
Note: If you are having confusion that I did not use bind on the extra function I defined. Notice that I’m using ES6 arrow function, not the traditional function keyword.
This is due to our web server are configured to deny accessing this directory…
I have a custom content type, and there are around 2000 number of nodes in my…
Visual Studio Code is one of the awesome developer tools by Microsoft. Let’s…
Read file all in one shot Above code read whole file at once, but if the files…
Introduction Drupal is an awesome CMS. Drupal content type form, allows you to…
Introduction to problem This post is applicable for those who has already an SSL…
Introduction In this post we will see following: How to schedule a job on cron…
Introduction There are some cases, where I need another git repository while…
Introduction In this post, we will see how to fetch multiple credentials and…
Introduction I have an automation script, that I want to run on different…
Introduction I had to write a CICD system for one of our project. I had to…
Introduction Java log4j has many ways to initialize and append the desired…