Невозможно передать другой аргумент рядом с аргументом события. e.preventDefault не является функцией - PullRequest
0 голосов
/ 13 апреля 2020

Добрый вечер,

Я хочу вызвать задержку после нажатия на ссылку в 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>
    );
};

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

вам нужно передать событие в качестве аргумента onClick={(e) => delayFunction(e, path)}

, а затем delayFunction функция может принять e, path в качестве параметров

delayFunction(e, path)

1 голос
/ 13 апреля 2020

Измените onClick={() => delayFunction(path)} на onClick={e => delayFunction(e, path)} и измените параметры в заголовке delayFunction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...