我有一个页面组件让我们说HomePage
。我有两个无状态组件List
和ListRow
。这个想法是用项目列表来显示表格,当用户点击任何特定的行时,隐藏表格并显示该特定行的细节。从无状态组件执行状态方法
HomePage
渲染方法
所以:
<List data={listOfData} onClick={this.clickHanlder} />
的HomePage
单击处理方法:
clickHandler(name) {
console.log(name);
}
在我List
无状态组件我这样做:
const List = ({data, onClick}) => {
return (
<table>
<thead>
<tr>
<td>Name</td>
</tr>
</thead>
<tbody>
{data.map(el =>
<ListRow key={el.id} item={el} onClick={onClick} />
)}
</tbody>
</table>
);
}
而且在我的ListRow
stat eless组件我这样做:在HomePage
const ListRow = ({item, onClick}) => {
return (
<tr>
<td><a href="#" onClick={onClick(el.name)}>{el.name}</a></td>
</tr>
);
}
单击处理方法执行一次页面加载,甚至没有点击行。当我点击该行时,没有任何反应。
我被困在如何以及在哪里处理单击事件,以便隐藏表格并显示该行的详细信息。我也应该实现关闭/后退按钮来显示表格并隐藏细节。
我到目前为止所做的是在HomePage
中实现click事件方法,该方法将更新其状态并将该方法传递给ListRow
无状态组件。但是,当我加载应用程序本身,点击事件得到执行。我不知道如何正确处理这个问题。
点击事件在哪里? –
@IlanHasanov:那是我在哪里实施困惑。我尝试在'HomePage'中实现click事件方法,并将这些道具传递给'List',然后'List'传递给'ListRow'。但它不起作用。 –