The state is an updatable structure that is used to contain data or information about the component. The state in a component can change over time. The change in state over time can happen as a response to user action or system event. A component with the state is known as stateful components. It is the heart of the react component which determines the behavior of the component and how it will render. They are also responsible for making a component dynamic and interactive.
A state must be kept as simple as possible. It can be set by using the setState() method and calling setState() method triggers UI updates. A state represents the component's local state or information. It can only be accessed or modified inside the component or by the component directly. To set an initial state before any interaction occurs, we need to use the getInitialState() method.
For example, if we have five components that need data or information from the state, then we need to create one container component that will keep the state for all of them.
To define a state, you have to first declare a default set of values for defining the component's initial state. To do this, add a class constructor which assigns an initial state using this.state. The 'this.state' property can be rendered inside render() method.
The below sample code shows how we can create a stateful component using ES6 syntax.
import React, { Component } from 'react'; class App extends React.Component { constructor() { super(); this.state = { displayBio: true }; } render() { const bio = this.state.displayBio ? () : null; return (rookienerd is one of the best Java training institute in Noida, Delhi, Gurugram, Ghaziabad and Faridabad. We have a team of experienced Java developers and trainers from multinational companies to teach our campus students.
); } } export default App;Welcome to rookienerd!!
{ bio }
To set the state, it is required to call the super() method in the constructor. It is because this.state is uninitialized before the super() method has been called.
Output
We can change the component state by using the setState() method and passing a new state object as the argument. Now, create a new method toggleDisplayBio() in the above example and bind this keyword to the toggleDisplayBio() method otherwise we can't access this inside toggleDisplayBio() method.
this.toggleDisplayBio = this.toggleDisplayBio.bind(this);
In this example, we are going to add a button to the render() method. Clicking on this button triggers the toggleDisplayBio() method which displays the desired output.
import React, { Component } from 'react'; class App extends React.Component { constructor() { super(); this.state = { displayBio: false }; console.log('Component this', this); this.toggleDisplayBio = this.toggleDisplayBio.bind(this); } toggleDisplayBio(){ this.setState({displayBio: !this.state.displayBio}); } render() { return () } } export default App;Welcome to rookienerd!!
{ this.state.displayBio ? () : (rookienerd is one of the best Java training institute in Noida, Delhi, Gurugram, Ghaziabad and Faridabad. We have a team of experienced Java developers and trainers from multinational companies to teach our campus students.
) }
Output:
When you click the Read More button, you will get the below output, and when you click the Show Less button, you will get the output as shown in the above image.