Я новичок в React и Javascript, поэтому извините, если это слишком просто.
У меня есть компонент Menu, который отображает анимацию onClick
, а затем перенаправляет приложение на другой маршрут, /coffee
.
Я хотел бы передать значение, которое было выбрано (выбрано), для функции this.gotoCoffee
и обновления this.state.select
, но я не знаю как, поскольку я сопоставляю все элементы в this.state.coffees
в одном и том же событии onClick
.
Как мне это сделать и обновить this.state.select
до значения щелчка?
Мой код:
class Menus extends Component{
constructor (props) {
super(props);
this.state = {
coffees:[],
select: '',
isLoading: false,
redirect: false
};
};
gotoCoffee = () => {
this.setState({isLoading:true})
setTimeout(()=>{
this.setState({isLoading:false,redirect:true})
},5000)
}
renderCoffee = () => {
if (this.state.redirect) {
return (<Redirect to={'/coffee/${this.state.select}'} />)
}
}
render(){
const data = this.state.coffees;
return (
<div>
<h1 className="title is-1"><font color="#C86428">Menu</font></h1>
<hr/><br/>
{data.map(c =>
<span key={c}>
<div>
{this.state.isLoading && <Brewing />}
{this.renderCoffee()}
<div onClick={() => this.gotoCoffee()}
<strong><font color="#C86428">{c}</font></strong></div>
</div>
</span>)
}
</div>
);
}
}
export default withRouter(Menus);
Я попытался передать значение следующим образом:
gotoCoffee = (e) => {
this.setState({isLoading:true,select:e})
setTimeout(()=>{
this.setState({isLoading:false,redirect:true})
},5000)
console.log(this.state.select)
}
примерно так:
<div onClick={(c) => this.gotoCoffee(c)}
или около того:
<div onClick={(event => this.gotoCoffee(event.target.value}
но console.log(this.state.select)
показывает мне "undefined
" для обеих попыток.
Похоже, что я передаю Class
с 'c'.
браузер показывает мне точно, что на URI при перенаправлении:
http://localhost/coffee/[object%20Object]
Теперь, если я передаю сопоставленное "c" {this.renderCoffee(c)}
, которое не является событием onClick
, мне удается передать элементы массива.
но мне нужно передать не объект, а нажатое значение 'c' в this.gotoCoffee(c)
, а затем обновить this.state.select
.
Как я могу это исправить?