Dark Lord
Dark Lord

Reputation: 425

Getting Error message: Unexpected Token

I was trying this code in react, but I was getting this error:

Unexpected Token .

I was trying to bind the value to something on html, and see if change in value reflects on the html, like a angular ng-bindings.

Code:

class NameForm extends React.Component {
    constructor(props) {
        super(props);
        this.state = {value: ''};

        this.handleChange = this.handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
    }

    handleChange(event) {
        this.setState({value: event.target.value});
    }


    handleSubmit(event) {
        alert('A name was submitted: ' + this.state.value);
        event.preventDefault();
    }

    render() {
        return (
            <form onSubmit={this.handleSubmit}>
                <label>
                    Name:
                    <input type="text" value={this.state.value} onChange={this.handleChange} />
                </label>
                <input type="submit" value="Submit" />
            </form>
            <a>{this.state.value}</a>
        );
    }
}

ReactDOM.render(
    <NameForm />,
    document.getElementById('root')
);

Can someone tell me where I am going wrong.

Upvotes: 1

Views: 632

Answers (1)

Mayank Shukla
Mayank Shukla

Reputation: 104529

Reason is, you are returning more than one html element from render method, In a component's render, you can only return one node; if you have, say, a list of elements to return, you must wrap those within a div, span or any other component.

Don't forget that the render() is basically a function, Functions always take in a number of parameters and always return exactly one value.

Use this:

return (
   <div>
       <form onSubmit={this.handleSubmit}>
         <label>
           Name:
           <input type="text" value={this.state.value} onChange={this.handleChange} />
         </label>
         <input type="submit" value="Submit" />
       </form>
       <a>{this.state.value}</a>
   </div>
);

Upvotes: 4

Related Questions