У меня проблема с пузырем событий. У меня есть карта с функцией onClick. На карте есть значок сердца, который также имеет функцию onClick. Когда я щелкаю по значку сердца на карточке, чтобы отличать ее от карты, выполняется также функция onClick fn для всей карточки, которая выводит меня на другую страницу, на которой отображается более подробная информация о карточке, в частности грузовик с продуктами. Как я могу предотвратить это?
Я пробовал это:
const removeFromFavorites = (e, truckId) => {
props.removeFromFavoriteTrucks(props.dinerId, truckId);
e.stopPropagation();
}
Но с этим кодом я получаю сообщение об ошибке: «e.stopPropagation не является функцией. "
карта:
<Card className="truck-card" onClick={() => selectTruck(truck.id)}>
<CardActionArea>
<CardMedia
className="truck-img"
image={truck.image}
style={{ width: '100%' }}
/>
<i
className="like-icon"
class={filterThroughFavs(truck.id).length > 0 ? "fas fa-heart" : "far fa-heart"}
onClick={() => removeFromFavorites(truck.id)}
/>
<CardContent className="truck-contents">
<Typography className="truck-name" gutterBottom variant="h5" component="h2">
{truck.name}
</Typography>
<Typography className="cuisine-type" component="h3">
{truck.cuisine_type}
</Typography>
</CardContent>
</CardActionArea>
</Card>
функции обработчика щелчков:
const selectTruck = truckId => {
props.setSelectedTruck(truckId);
setInitialMode(false);
}
const removeFromFavorites = (truckId) => {
props.removeFromFavoriteTrucks(props.dinerId, truckId)
}
Обновление:
Итак, мне нужно было пройти e
в мою внутреннюю функцию div, вызовите внутри нее e.stopPropagation, а затем поместите e внутри моего onClick. * Извините за отсутствие красноречия в объяснении этого. Вот код:
const removeFromFavorites = (e, truckId) => {
props.removeFromFavoriteTrucks(props.dinerId, truckId);
e.stopPropagation();
}
<i
className="like-icon"
class={ filterThroughFavs(truck.id).length > 0 ? "fas fa-heart" : "far fa-heart"}
onClick={(e) => removeFromFavorites(e, truck.id)}
/>
![enter image description here](https://i.stack.imgur.com/nCKM7.jpg)