Как связать действия со ссылкой в маршрутизаторе React?

#javascript #reactjs #react-router

#javascript #reactjs #react-маршрутизатор

Вопрос:

Я сопоставляю некоторые значения и вывожу ссылку для каждого значения. Когда пользователь нажимает на ссылку, я хотел бы установить context до того, как будет активирована часть ссылки «кому». Возможно ли это? На данный момент кажется, что в приведенном ниже коде оба действия, настройка контекста и связывание в маршрутизаторе выполняются одновременно.

 { myTags amp;amp; myTags.map(tag => (
    <li key={tag}>
        <button>
            <Link onClick={() => setTagContext(tag)} to={`/filter/${tagContext}`}>
                {tag}
            </Link>
        </button>
    </li>
))}
 

Я почти могу получить результат, который я ищу, используя вместо этого ‘onmouseover’, но я бы предпочел использовать onClick. Возможно ли это?

Приветствия, Мэтт

Ответ №1:

  • button Вместо этого используйте. Лучше использовать кнопку, если у нее есть событие onClick.
  • Кроме того, вы могли бы просто использовать history для обновления URL.
 const history = useHistory();

function handleLinkClick(tag) {
   setTagContext(tag);
   history.push(`/filter/${tagContext}`);
}

{ myTags amp;amp; myTags.map(tag => (
    <li key={tag}>
        <button onClick={() => handleLinkClick(tag)}>
             {tag}
        </button>
    </li>
))}
 

Комментарии:

1. Привет, Пратик, спасибо за ваш ответ. Это дает тот же результат, но странное поведение (на мой взгляд). В приведенном ниже коде журнал консоли выводит значение по умолчанию, а не значение тега: функция handleLinkClick(tag) { setTagContext(tag); console.log(‘handle value: ‘,tagContext) history.push( /filter/${tagContext} ); } Как будто он игнорирует инструкцию setTagContext .