【发布时间】:2023-04-06 15:19:01
【问题描述】:
在我的 React 应用程序中,我有两个组件,主组件和菜单组件。 Main Component 是 Menu 的父组件。 Menu 显示一个项目列表,单击其中一个项目时,它会借助我作为道具传递给 Menu 的函数来更新 Main 的状态。下面是更好理解的代码:
class Main extends React.Component {
constructor(props) {
super(props);
this.state = {
dishes: dishes,
selectedDish: null
};
this.selectDish=this.selectDish.bind(this);
}
selectDish(dishId){
this.setState({ selectedDish: dishId});
}
render() {
return (
<div className="App">
<Menu dishes={this.state.dishes} onClick={this.selectDish} />
</div>
);
}
}
export default Main;
下面是菜单组件:
class Menu extends Component {
constructor(props){
super(props);
this.selectdish=this.selectdish.bind(this);
}
selectdish(dishId){
return this.props.onClick(dishId);
}
render() {
const menu = this.props.dishes.map((dish) => {
return (
<div className="col-12 col-md-5 m-1">
<Card key={dish.id}
onClick={this.selectdish(dish.id)}>
</Card>
</div>
);
});
}
}
export default Menu;
我省略了代码中一些不相关的部分。
所以工作流程应该是,当我们点击菜单呈现的菜品之一时,菜品的 id 应该传回 Main 并更新状态变量 ``selectedDish```,如方法 selectDish 所示。
但在浏览器控制台中,我收到错误 Cannot update during existing state transition。
奇怪的是,如果我不传递任何菜品 ID 并将 selectedDish 设置为 1 之类的固定值,一切正常。
请帮我确定我的事件处理程序是否有任何问题,因为这是唯一似乎包含错误的部分。
谢谢!
【问题讨论】:
标签: reactjs