React

by Dave Salomon

HTML

<div id="app"></div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
}

li {
  margin: 8px 0;
}

h2 {
  font-weight: bold;
  margin-bottom: 15px;
}

.done {
  color: rgba(0, 0, 0, 0.3);
  text-decoration: line-through;
}

input {
  margin-right: 5px;
}

React

class TodoApp extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      guess: 50,
      max: 100,
      min: 1
    };
    
    this.Higher = this.Higher.bind(this);
    this.Lower = this.Lower.bind(this);
  }
  
  Higher() {
    var newMin = this.state.guess;
    var newGuess = (newMin + this.state.max) / 2;
    this.setState({
      min: newMin,
      guess: newGuess    
    });
  }
  
  Lower() {
    var newMax = this.state.guess;
    var newGuess = (this.state.min + newMax) / 2;
    
    this.setState({
      max: newMax,
      guess: newGuess
      
    });
  }

  render() {
    return (
      <div>
        <p> Current guess: <strong>{Math.round(this.state.guess)} </strong></p>
        
        <button onClick={this.Higher}> Higher </button>
        <button onClick={this.Lower}>Lower</button>
      </div>
    )
  }
}

ReactDOM.render(<TodoApp />, document.querySelector("#app"))