#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 .