(I think i done correct but...)Manage State Locally First

Tell us what’s happening:

Anybody able to help me spot my mistake?

Your code so far


class DisplayMessages extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      input: '',
      messages: []
    }
    this.handleChange = this.handleChange.bind(this);
    this.submitMessage = this.submitMessage.bind(this)
  }
  // add handleChange() and submitMessage() methods here

  handleChange(a) {
    this.setState ({
     input : a.target.value 
    })
  }

  submitMessage() {
      this.setState({
        messages:  this.state.messages.concat(this.state.input),
        input : ''
      })
  }

  render() {
    return (
      <div>
        <h2>Type in a new Message:</h2>
        { /* render an input, button, and ul here */ }    <input value = {this.state.input} onClick={this.handleChange}/>
        <button type ="button" onClick={this.submitMessage}>Add message</button>
        <ul>
        {this.state.messages.map(messages =>
        <li>{messages}
        </li>)}
        </ul>

        { /* change code above this line */ }
      </div>
    );
  }
};

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36.

Link to the challenge:

Take a closer look on this part:
<input value = {this.state.input} onClick={this.handleChange}/>
After that try to say out loud what this element should be doing and you will understand the problem instantly.

The problem is that it is not possible to type in the input box. This is because it has an onClick listener assigned instead of an onChange listener.