Добрый вечер,
Я хочу вызвать задержку после нажатия на ссылку в React Router. С этим кодом все в порядке:
const delayFunction = e => {
e.preventDefault();
setTimeout(() => {
history.push('/About');
}, 2000);
};
Моя проблема: Я хочу добавить аргумент "path" рядом с аргументом "e", потому что stati c path '/ About' бесполезно, когда я сопоставляю все свои ссылки. Когда я пытаюсь это сделать, я получаю сообщение об ошибке:
TypeError: e.preventDefault is not a function
Мне это нужно. Я пытался добавить аргумент пути, но все еще не знал, как решить эту проблему.
код:
const HeaderList = ({ open, showheader, pageContext, changeSection }) => {
const [items] = useState([
{ pathname: 'projects', path: routes.projects },
{ pathname: 'services', path: routes.services },
{ pathname: 'about', path: routes.about },
{ pathname: 'contact', path: routes.contact },
]);
const history = useHistory();
const delayFunction = e => {
e.preventDefault();
setTimeout(() => {
history.push('/projects');
}, 2000);
};
const history = useHistory();
const delayRedirect = path => {
setTimeout(() => {
history.push(path);
console.log(path);
console.log(history);
}, 5000);
}
return (
<StyledList open={open}>
{items.map(({ pathname, path }) => {
return (
<StyledListItem key={pathname}>
<StyledLink
key={pathname}
to={path}
pagetype={pageContext}
showheader={showheader ? 1 : 0}
onClick={() => delayFunction(path)}
>
{pathname}
</StyledLink>
</StyledListItem>
);
})}
</StyledList>
);
};
Заранее спасибо!