Files
30-seconds-of-code/snippets/Toggle.md
Angelos Chalaris 7538a593ea Update Toggle.md
2018-12-03 20:35:24 +02:00

1.4 KiB

Toggle

Renders a toggle component.

Initialize state.isToggleOn to false, bind the handleClick method to the component's context. Use an object, style, to hold the styles for individual components and their states. Create a method, handleClick, which uses Component.prototype.setState to change the component's state.toggleOn. In the render() method, destructure state and style, create a <button> that alters the component's state and determine the appearance of the content based on state.isToggleOn, applying the appropriate CSS rules from the style object.

class Toggle extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      isToggleOn: false
    };
    this.style = {
      on: {
        backgroundColor: 'green'
      },
      off: {
        backgroundColor: 'grey'
      }
    };

    this.handleClick = this.handleClick.bind(this);
  }

  handleClick() {
    this.setState(state => ({
      isToggleOn: !state.isToggleOn
    }));
  }

  render() {
    const { isToggleOn } = this.state;
    const { on, off } = this.style;

    return (
      <button
        onClick={this.handleClick}
        style={isToggleOn ? on : off}
      >
        {isToggleOn ? 'ON' : 'OFF'}
      </button>
    );
  }
}
ReactDOM.render(<Toggle />, document.getElementById('root'));