Я запутался в том, как я должен вызывать события из дочернего компонента с помощью хуков (или, скорее, компонентов без состояния). Может быть, я слишком много думаю. Или не достаточно! Я построил простой пример, иллюстрирующий мое замешательство.
Скажем, у нас есть родительский компонент с некоторыми данными
import React, { useState } from "react";
import ReactDOM from "react-dom";
const Parent = () => {
const data = [
{
thing: 1,
info: "this is thing 1"
},
{
thing: 2,
info: "this is thing 1"
},
{
thing: 3,
info: "this is thing 3"
}
];
function handleClick(item) {
console.log(item);
}
return (
<div>
<h1> This is the Parent </h1>
<Child data={data} onShowClick={handleClick} />
</div>
)
};
И дочерние компоненты, созданные из сопоставления через данные
const Child = (data, {onShowClick}) => {
return (
<ul>
{ data.data.map(item => {return (
<li key={item.thing}>{item.info}
<button onClick={() => onShowClick}>Click</button>
</li>
)})}
</ul>
)
}
Если бы все это было найдено в одном и том же компоненте, я бы сделал что-то вроде
onClick={() => handleClick(item)}
Но вы не можете передать аргумент с опорой.
onClick={(item) => onShowClick}
// Or
onClick={onShowClick(item)}
Может, крючки меня смущают Любое направление будет оценено.