@webdefvika
SMM специалист

Как в дочернем компоненте react для компонента Link реализовать аналог preventDefault?

Есть компонент PizzaBlock который формирует блок товаров. Это функциональный компонент с типом React.FC

650a9e042da30463194768.jpeg

В самом компоненте PizzaBlock у меня есть кнопка Добавить которая позволяет добавлять товар в корзину на основе обработчика onClick где вызывается функция добавления товара.

650a9e891ae35352146872.jpeg

<button onClick={onClickAdd()}  className="button button--outline button--add">
       <span>Добавить</span>
       {addedCount > 0 && <i>{addedCount}</i>}
 </button>


Добавление в корзину отрабатывает нормально. Но возникает другая проблема каждый раз когда я кликаю на кнопку Добавить происходит переход на детальную страницу товара вместо того чтобы оставлять пользователя на странице списка товаров, это происходит из за того что в файле вывода списка товаров я обхожу массив данных используя Map и формирую список товаров где каждый товар (компонент PizzaBlock) у меня обернут в компонент Link

const pizzas = items.map((obj: any) => (
    	<Link key={obj.id} to={`/pizza/${obj.id}`}>
    		<PizzaBlock  {...obj} />
    	</Link>
    ));


Подскажите как сделать так чтобы переход на детальную страницу отрабатывал только в том случае если пользователь кликает на блок с товаром, но если он будет кликать на кнопку Добавить происходило только добавление товара в корзину, но сам Link не отрабатывал? Наверное нужен некий аналог Event.preventDefault() и Event.stopPropagation() которые есть в нативном JavaScript
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
szQocks
@szQocks
просто вызови e.preventDefault в обработчике кнопки, зачем это надо ?

событие клик можно отменить - как будто и не было, если вывести в консоль лог e.cancelable и посмотреть если оно равно true то событие можно отменить дока
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
03 мая 2024, в 22:22
10000 руб./за проект
03 мая 2024, в 22:18
1000 руб./за проект
03 мая 2024, в 21:57
1000 руб./за проект