Реакт-роутеры берут два-шесть раз для перенаправления на другие страницы - PullRequest
0 голосов
/ 06 июня 2018

(Проблема) реакция-маршрутизатор занимает два-шесть раз для перенаправления на другие страницы

Вот ссылка, по которой я нажимаю.

<div className='drawer-item' onClick={this.drawerItemClicked}>
     <BinaryLink to={link_to}>
          <span className={icon || undefined}>{text}</span>
     </BinaryLink>
</div>

Когдаэлемент (ссылка) щелкается, drawerItemClicked срабатывает.

drawerItemClicked = (e) => {
    this.props.hideDrawers();
    if (this.props.collapseItems) {
        this.props.collapseItems();
    }        
}

И в то же время BinaryLink срабатывает

export const BinaryLink = ({ to, children, ...props }) => {
    const path  = normalizePath(to);
    const route = getRouteInfo(path);
    console.log('to');
    console.log(to); <- triggers continuously
    if (!route) {
        throw new Error(`Route not found: ${to}`);
    }

    return (
        to ?
            <NavLink to={path} activeClassName='active' exact={route.exact} {...props}>
                {children}
            </NavLink>
        :
            <a href='javascript:;' {...props}>
                {children}
            </a>
    );
};

Вот класс маршрутизатора

const routes = [
    { path: '/',          component: TradeApp, exact: true },
    { path: '/statement', component: Statement, is_authenticated: true },
    { path: '/account',   component: LostPassword, is_authenticated: false },
];

const RouteWithSubRoutes = route => (
    <Route
        exact={route.exact}
        path={route.path}
        render={props => (
            (route.is_authenticated && !Client.isLoggedIn()) ? // TODO: update styling of the message below
                <a href='javascript:;' onClick={redirectToLogin}>{localize('Please login to view this page.')}</a> :
                <route.component {...props} routes={route.routes} />
        )}
    />
);

export const BinaryRoutes = () => routes.map((route, idx) => (
    <RouteWithSubRoutes key={idx} {...route} />
));

Что-то пошло не так.Но я не могу устранить неполадки.

Выходные данные из to продолжают вызывать route.js, поскольку он отображает текущее время с сервера.Однако, даже если я удалю его, он не будет работать.

...
routes.js:48 undefined
rroutes.js:47 to
routes.js:48 undefined
routes.js:47 to
routes.js:48 undefined
routes.js:47 to
routes.js:48 undefined
routes.js:47 to
routes.js:48 undefined
routes.js:47 to
routes.js:48 undefined
routes.js:47 to
routes.js:48 undefined

Моя мысль Определенно что-то не так, где я определил <NavLink>

1 Ответ

0 голосов
/ 06 июня 2018

Оказалось, что произошла ошибка CSS.Тег <a> не занимал все пространство в div.Я надеюсь, что это решает проблемы других.

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