#javascript #reactjs #react-functional-component
#javascript #reactjs #реагировать-функциональный компонент
Вопрос:
Я использую ReactJS, и у меня есть два компонента без состояния:
Родительский компонент получает список проектов
{currentProjectData.map((project) => (
<ProjectItem
key={project.projectid}
id={project.projectid}
project={project}
/>
))}
и дочерний компонент получает ключ
return (
<Card key={id} elevation={5} className={classes.root}>
<Box
borderLeft={componentItem.borderLeftValue}
borderColor={componentItem.borderColorValue}
onMouseOver={handleChangeOnMouseEnter}
onMouseLeave={handleChangeOnMouseLeave}
></Card>)
У меня возникли проблемы при попытке обработать событие щелчка, когда кто-то нажимает на карточку, мне нужен ключ
const handleClick = (key) => {
console.log(key);
};
Я помещаю событие щелчка внутри Card
<Card
key={id}
elevation={5}
className={classes.root}
onClick={handleClick(id)}
>
но событие щелчка срабатывает, когда я перемещаю курсор внутри карты
Где я должен обрабатывать событие щелчка (родительский компонент или дочерний компонент) и как?
Ответ №1:
Оно должно быть на карте, то, что вы передаете в handleClick, зависит от того, как вы используете реквизиты в дочернем компоненте, вы можете передать ключ или идентификатор. Синтаксис может быть props.key или props.id также, если вы не разрушаете реквизит.
return (
<Card key={id} elevation={5} className={classes.root} onClick={()=>handleClick(id)}>
<Box
borderLeft={componentItem.borderLeftValue}
borderColor={componentItem.borderColorValue}
onMouseOver={handleChangeOnMouseEnter}
onMouseLeave={handleChangeOnMouseLeave}
></Card>)
Комментарии:
1. Я пытался, но событие щелчка срабатывает при перемещении курсора внутри карты, а не при щелчке на карте, я не знаю почему
2. Попробуйте передать функцию обратного вызова {()=> обработать щелчок (идентификатор)}
3. handleClick должен быть дочерним, если вы не передаете его как prop от родительского
4. Да, это работает!! передача функции обратного вызова {()=> обработка щелчка (id)} @SM1105922