我是一名 React 的新手,希望从基础开始学习这个框架。我已经构建了一些简单的组件(用于典型餐厅网站),但我在理解事件处理方面遇到了问题。基本上,我有一个应用程序组件,它只调用 Main 组件,而 Main 组件又调用 Menu 和 Dishdetail 组件。因此,层次结构是 App --> Main --> (Menu 和 Dishdetail)。
App(仅调用 Main)
return (
<div>
**<Main/>**
</div>
);
主要内容(通过属性调用菜单组件): 在这里,我使用了 onClick 事件。
**<Menu dishes={this.state.dishes}
onClick={(dishId) => this.onDishSelect(dishId)} />**
菜单(使用onClick事件使用RenderMenuItem函数组件渲染内容)
const menu = props.dishes.map((dish) => {
return (
<div key={dish.id} className="col-12 col-md-5 mt-5 m-1">
**<RenderMenuItem dish={dish} onClick={props.onClick} />**
</div>
)
});
RenderMenuItem 的功能性组件:
function RenderMenuItem({ dish, **onClick** }) {
return (
**<Card onClick={() => onClick(dish.id)}>**
<CardImg width='100%' src={dish.image} alt={dish.name} />
<CardImgOverlay>
<CardTitle>{dish.name}</CardTitle>
</CardImgOverlay>
</Card>
)}
一切工作正常,但我在理解事件处理程序方面遇到了问题,而且对箭头函数也不熟悉。据我的理解:
App 调用 Main 组件,Main 组件再使用两个 props 调用 menu 组件。在这里,我使用箭头函数作为 onClick 事件的响应,以设置组件的状态(因此我知道选择了哪道菜)。但我同时将其传递为 props 吗?还是不是?
执行流程进入 menu 组件后,它会使用 'loop' 中选定的菜肴和收到的相同 prop onClick 调用 RenderMenuItem。这里发生了什么?它只是指示程序调用 Main 组件中的函数(就像在第1点中再次更改状态)吗?
在 RenderMenuItem 组件中,我不知道除了它调用一个名为 onClick 的函数并传递参数 dish.id 外,onClick 属性还有什么作用。有人能详细解释一下当您将像 onClick 这样的事件属性传递给子组件时实际发生了什么吗?