我有一個頁面組件讓我們說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'。但它不起作用。 –