React components has a built-in state
object. The state
object is where you store property values that belongs to the component. When the state
object changes, the component re-renders. State is similar to props, but it is private and fully controlled by the component.
class Profile extends React.Component { constructor(props) { super(props); this.state = { name: "Folau" }; } render() { return ( <div> <h1>My name is {this.state.name}</h1> </div> ); } }
Change state
To change a value in the state object, use the this.setState()
method. When a value in the state
object changes, the component will re-render, meaning that the output will change according to the new value(s).
class Profile extends React.Component { constructor(props) { super(props); this.state = { name: "Folau" }; } changeName = () => { this.setState({name: "Lisa"}); } render() { return ( <div> <h1>My name is {this.state.brand}</h1> <button type="button" onClick={this.changeName} >Change Name</button> </div> ); } }
Always use the setState()
method to change the state object, it will ensure that the component knows its been updated and calls the render() method (and all the other lifecycle methods).
Don’t change state directly
this.state.comment = 'Hello';