This is my SearchForm.js, handleKeywordsChange
must handle input keywords
changes
import React from 'react'; import ReactDOM from 'react-dom'; class SearchForm extends React.Component { constructor(props) { super(props) this.state = { keywords: '', city: '', date: '' } //this.handleChange = this.handleChange.bind(this) //this.handleSubmit = this.handleSubmit.bind(this) this.handleKeywordsChange = this.handleKeywordsChange.bind(this); } handleKeywordsChange(e) { console.log(1); this.setState({ value: e.target.value }); } render() { return ( <form className='form search-form' onSubmit={this.handleSubmit}> <div className="form-row"> <div className="form-group col-md-5"> <label htmlFor="keywords">Keywords</label> <input type="text" className="form-control" name="keywords" id="keywords" placeholder="Keywords" onChange={this.handleKeywordsChange} value={this.state.keywords} /> </div> <div className="form-group col-md-5"> <label htmlFor="city">City</label> <input type="text" className="form-control" name="city" id="city" placeholder="City" onChange={this.handleChange} value={this.state.city} /> </div> <div className="form-group col-md-2"> <label htmlFor="date">Date</label> <select className="form-control" name="date" id="date" onChange={this.handleChange} value={this.state.date}> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> </div> <div className="form-row"> <div className="form-group col-md-12"> <input id='formButton' className='btn btn-primary' type='submit' placeholder='Send' /> </div> </div> </form> ) } } export { SearchForm }
The problem is input keywords
doesn’t change its value when I’m typing. What’s wrong?
Advertisement
Answer
Make a common function for changing the state for input values.
handleInputChange(e) { this.setState({ [e.target.name]: e.target.value }); }
Make sure you mention name
in every input
tag. e.g:
<input name="someUniqueName" value={this.state.someState} onChange={this.handleInputChange} />