Мой снимок внизу. У меня кончились идеи.
class Settings extends Component {
render(){
return(
<div className='App container'>
<h3>Select Currency</h3>
<select className="custom-select"
onChange={(prop, attr) => this.props.fetchData(id,value)}>
<option value='selected'></option>
<option value='EUR'>EUR</option
</select>
<Link to='/' className="btn" type="submit">Submit</Link>
</div>
)
}
}
}
Пожалуйста, помогите, что не так с моим кодом? Как я могу решить эту странную ошибку?
Ваш обработчик onChange неверен, потому что ему не передается id
и value
, а только объект события. Из объекта event.target вы должны получить эти значения, вот пример и короткий рефакторинг вашего компонента:
class Settings extends Component {
handleChange(e) {
this.props.fetchCurrency(e.target.id, e.target.value)
}
render(){
return(
<div className='App container'>
<h3>Select Currency</h3>
<select className="custom-select" id="inputGroup"
onChange={this.handleChange.bind(this)}>
<option value='selected'></option>
<option value='EUR'>EUR</option>
<option value='AUD'>AUD</option>
<option value='GBP'>GBP</option>
<option value='CAD'>CAD</option>
<option value='JPY'>JPY</option>
</select>
<Link to='/' className="btn btn-light btn-block" type="submit">Submit</Link>
</div>
)
}
}
id="inputGroup"
является устаревшим, так как он будет принимать id
оттуда. :)
onChange выполняет по умолчанию обратный вызов с событием (если вы регистрируете идентификатор, вы увидите объект Proxy). Итак, что вам нужно сделать:
{(event) => this.props.fetchCurrency(event.target.value, event.target.options[event.target.options.selectedIndex].id)}
event.target.options[event.target.options.selectedIndex].id
необходимо, если вы хотите, чтобы выбранный идентификатор параметра, который пока отсутствует в вашем коде.
id
это объект, а неstring
илиint
...