【发布时间】:2021-08-01 09:04:45
【问题描述】:
嗨,我是全新的反应。在我的应用程序中,我有两个状态变量,“dishes”(一个包含各种菜肴细节的对象,例如“id”、“name”等)和“selectedDish”(一个数值)。当用户点击菜单中的一道菜(由“菜单”组件呈现)时, selectedDish 变量会更新为所选菜的 id(我已经检查过它是否有效)。
现在我想通过做来选择这道菜
dish={this.state.dishes.filter((dish)=>{return dish.id===this.state.selectedDish})[0]}
然后将其作为道具传递给另一个组件(DishDetail)。
我的问题是我似乎无法使用上述方法选择一道菜。 (我从 DishDetail 组件中收到错误“this.props.dish”未定义)。我做错了吗?
class Main extends Component {
constructor(props) {
super(props);
this.state = {
dishes: DISHES,
selectedDish: null
};
}
onDishSelect(dishId){
this.setState({selectedDish : dishId})
}
render(){
return (
<div>
<div className="container">
<div className="row">
<Menu dishes={this.state.dishes} onClick={(dishId)=>{
this.onDishSelect(dishId)}}/>
<DishDetail dish={this.state.dishes.filter((dish)=>
{
return dish.id===this.state.selectedDish
})[0]} />
</div>
</div>
</div>
);
}
}
export default Main;
DishDetail 组件
import React, { Component } from 'react'
import { Card, CardImg, CardImgOverlay, CardBody, CardText, CardTitle } from 'reactstrap';
class DishDetail extends Component {
constructor(props){
super(props);
this.state ={
}
}
render(){
return (
<div className="col-12 col-md-5 m1">
<Card>
<CardImg width="100%" src = {this.props.dish.image} alt = {this.props.dish.name}/>
<CardBody>
<CardTitle>{this.props.dish.name}</CardTitle>
<CardText>{this.props.dish.description}</CardText>
</CardBody>
</Card>
</div>
)
}
}
export default DishDetail;
【问题讨论】:
-
好吧,你必须显示为 DishDetail 组件的代码,不是吗。
-
您可以在菜单组件中为每道菜使用 DishDetail 组件。如果你这样做了,你就不用担心所有这些了。
-
已添加。谢谢!
-
你确定这不起作用。它对我来说运行得很好。
标签: javascript reactjs