相关疑难解决方法(0)

React Router v4中的嵌套路由

我正在尝试设置一些嵌套路由来添加公共布局.检查代码:

  <Router>
    <Route component={Layout}>
      <div>
        <Route path='/abc' component={ABC} />
        <Route path='/xyz' component={XYZ} />
      </div>
    </Route>
  </Router>
Run Code Online (Sandbox Code Playgroud)

虽然这很好用,但我仍然收到警告:

警告:您不应在同一路线中使用<Route component>和<Route children>; 将被忽略

react-router react-router-v4

63
推荐指数
3
解决办法
4万
查看次数

您不应该在<Router>之外使用<Link>

我正在尝试在示例应用程序中设置react-router,我收到以下错误:

You should not use <Link> outside a <Router>
Run Code Online (Sandbox Code Playgroud)

我的应用程序设置如下:

父组件

const router = (
  <div className="sans-serif">
    <Router histpry={browserHistory}>
      <Route path="/" component={Main}>
        <IndexRoute component={PhotoGrid}></IndexRoute>
        <Route path="/view/:postId" component={Single}></Route>
      </Route>
    </Router>
  </div>
);

render(<Main />, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)

儿童/ Main组件

export default () => (
  <div>
    <h1>
      <Link to="/">Redux example</Link>
    </h1>
  </div>
)
Run Code Online (Sandbox Code Playgroud)

知道我在这里做错了吗?

这是一个用于演示问题的Sandbox链接.

jsx reactjs react-router

44
推荐指数
5
解决办法
5万
查看次数

如何在React Router v4中嵌套路由?

有没有办法在React Router v4中嵌套路由?

这有效:

  <Router basename='/app'>
    <main>
      <Route path='/' component={AppBar} />
      <Route path='/customers' component={Customers} />
    </main>
  </Router>
Run Code Online (Sandbox Code Playgroud)

这不是:

  <Router basename='/app'>
    <Route path='/' component={AppBar}>
      <Route path='/customers' component={Customers} />
    </Route>
  </Router>
Run Code Online (Sandbox Code Playgroud)

客户组件:

import React, { Component, PropTypes } from 'react'
import styled from 'styled-components'

export default class Customers extends Component {
  render () {
    return (
      <Container>
        <h1>Customers</h1>
      </Container>
    )
  }
}

const Container = styled.section`
  height: 100%;
  padding: 15px;
  overflow: auto;
`
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-v4

19
推荐指数
2
解决办法
2万
查看次数

为什么我不能在react-router 4.x中嵌套Route组件?

世界上如何在react-router中使用嵌套路由,特别是版本4.x?以下版本在以下版本中运行良好...

<Route path='/stuff' component={Stuff}>
  <Route path='/stuff/a' component={StuffA} />
</Route>
Run Code Online (Sandbox Code Playgroud)

升级到4.x会发出以下警告......

警告:您不应在同一路径中使用<Route>组件和<Route children>; <Route children>将被忽略

到底发生了什么事?我已经搜索了几个小时的文档,无法成功地使嵌套路由工作.如何使用<Route>组件在react-router v4中嵌套其路由?我的简单示例如何转换为嵌套路由的v4.x API合规性?

javascript reactjs react-router react-router-v4

11
推荐指数
1
解决办法
9136
查看次数

React Router with - Ant Design Sider:如何使用相关菜单项的组件填充内容部分

我正在尝试像标签面板一样使用 AntD 菜单侧边。

我想将组件放在内容中,以便在单击菜单项时内容面板呈现相关组件。

如何让这种结构将组件作为每个菜单项的内容?

import React from 'react';
import { compose } from 'recompose';
import { Divider, Layout, Card, Tabs, Typography, Menu, Breadcrumb, Icon } from 'antd';
import { PasswordForgetForm } from '../Auth/Password/Forgot';


const { Title } = Typography
const { TabPane } = Tabs;
const { Header, Content, Footer, Sider } = Layout;
const { SubMenu } = Menu;


class Dashboard extends React.Component {
  state = {
    collapsed: false,
  };

  onCollapse = collapsed => {
    console.log(collapsed);
    this.setState({ collapsed …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs antd react-router-dom

11
推荐指数
3
解决办法
1万
查看次数

使用Switch实现路由器v4嵌套路由

尝试执行以下操作,但它无法正常工作.

ReactDOM.render(
  <Router>
    <div className="route-wrapper">
      <Switch>
        <App>
          <Route exact path="/" component={HomePage} />
          <Route path="/user" component={UserPage} />
        </App>
        <Route component={Err404} />
      </Switch>
    </div>
  </Router>,
  document.getElementById('main')
)
Run Code Online (Sandbox Code Playgroud)

正如文档所述,在Switch元素中只允许使用Route和Redirect元素.如果没有在App中明确地包装HomePage和UserPage或者App包含错误页面,我如何才能使用它?

javascript reactjs react-router

9
推荐指数
1
解决办法
1万
查看次数

React Rout v-4 `this.props.match.params` **undefined** 和 `staticContext` undefined

我在用

    "react": "^15.6.1",
    "react-dom": "^15.6.1",
    "react-router": "^4.1.2",
Run Code Online (Sandbox Code Playgroud)

野兔我的溃败:

<BrowserRouter>
        <div>
            <Route exact path='/' component={Layout}></Route>
            <Route path='/about' name="about" component={About}>
                <Route path="/:article" component={anotherAbout}></Route>
            </Route>
            <Route path='/protfolio' name="protfolio" component={Portfolio}></Route>
        </div>
    </BrowserRouter >
Run Code Online (Sandbox Code Playgroud)

当我打电话 {this.props.match.params.article}undefined

还有我的控制台: this.props 在此处输入图片说明

为什么staticContext: undefined和我的props.match.params空对象。

javascript reactjs react-router

9
推荐指数
1
解决办法
2万
查看次数

React Router v5.0 嵌套路由

我正在构建一个反应应用程序,但我无法使路由工作。

  1. 我需要一些验证途径一个共同的布局(页眉,页脚)( ,/loginsign-upforgot-password等...)

  2. 我需要需要另一种常见的布局应用程序的保护部分的剩余部分(HomeDashboard,等...)

  3. 我需要另一个没有任何布局的 404 页面。

我从这些链接中尝试了几种技术:

但可以达到工作版本。

这是我目前拥有的:

(注意:现在我忽略了阻止非登录用户进入 AppLayout 的私有路由的需要,我会在之后处理这个问题)

const App: React.FC = () => {
    const history = createBrowserHistory();

    return (
        <div className="App">
            <Router history={history}>
                <Switch>
                    <AppLayout>
                        <Route path="/home" component={HomePage}/>
                        <Route path="/dashboard" component={DashboardPage}/>
                        ...
                    </AppLayout>
                    <AuthLayout>
                        <Route path="/login" component={LoginPage}/>
                        <Route path="/sign-up" component={SignUpPage}/>
                        ...
                    </AuthLayout>
                    <Route path="*" component={NotFoundPage} />
                </Switch>
            </Router>
        </div>
    );
};

export …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router

7
推荐指数
2
解决办法
2万
查看次数

react-router索引路由始终处于活动状态

我试图通过使用react activeClassName属性来设置我的导航样式.到目前为止,它按预期工作,但有一个问题 - 我的第一个导航链接指向根路径(/).因此,即使在另一个URL上,它也会将该URL(例如/技能)和root注册为活动(因此2个菜单项的样式).

有一个简单的解决方法吗?我应该将Root路由定义为其他东西(例如/ home)吗?

我的标题:

import React, { PropTypes } from 'react';
import { Link, IndexLink } from 'react-router';

const Header = () => {
    return (
        <div className="header">
            <div className="headerImage"></div>
            <ul className="headerNav">
                <li className="headerNavLink"><Link to="/" activeClassName="activeLink">introduction</Link></li>
                <li className="headerNavLink"><Link to="/skills" activeClassName="activeLink">skills</Link></li>
                <li className="headerNavLink"><Link to="/portfolio" activeClassName="activeLink">portfolio</Link></li>
            </ul>
        </div>
    );
};

export default Header;
Run Code Online (Sandbox Code Playgroud)

routes.js:

import React from 'react';
import { Route, IndexRoute } from 'react-router';
//Import app
import App from './components/App';
//Import pages
import IntroductionPage from './components/introduction/IntroductionPage';
import …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

6
推荐指数
4
解决办法
2419
查看次数

在React中使用HashRouter分离登录页面

我想添加一个没有App作为父级的登录页面.这是我目前的HashRouter设置:

  <Provider store={ store }>
    <HashRouter>
      <App>
        <Route path='/path1' component={ Component1 } />
        <Route path='/path2' component={ Component2 } />
        <Route path='/path3' component={ Component3 } />
      </App>
    </HashRouter>
  </Provider>
Run Code Online (Sandbox Code Playgroud)

如果我这样做:

  <Provider store={ store }>
    <HashRouter>
      <div>
        <Route path='/login' component={ Login } />
        <App>
          <Route path='/path1' component={ Component1 } />
          <Route path='/path2' component={ Component2 } />
          <Route path='/path3' component={ Component3 } />
        </App>
      </div>
    </HashRouter>
  </Provider>
Run Code Online (Sandbox Code Playgroud)

然后我在应用程序上方获得登录页面.这是我的应用程序组件:

const App = ({ children }) => (
  <div>
    <Navbar/>
    <div className='col-md-10 col-md-offset-1'>
      { children …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-dom

5
推荐指数
1
解决办法
1696
查看次数

将react-router v3迁移到v4

我目前正在尝试将react-react从v3迁移到v4,但是我无法完全掌握新概念,我的旧反应路由器v3代码看起来像这样,有人可以看看并给我一些提示吗?

谢谢!

<Router history={ browserHistory }>
     <Route path="/" component={ App }>
       <IndexRoute name="index" component={ Index } />
       <Route name="documents" path="/documents" component={ Documents } onEnter={ authenticate } />
       <Route name="newDocument" path="/documents/new" component={ NewDocument } onEnter={ authenticate } />
       <Route name="editDocument" path="/documents/:_id/edit" component={ EditDocument } onEnter={ authenticate } />
       <Route name="viewDocument" path="/documents/:_id" component={ ViewDocument } onEnter={ authenticate } />
       <Route name="login" path="/login" component={ Login } />
       <Route name="recover-password" path="/recover-password" component={ RecoverPassword } />
       <Route name="reset-password" path="/reset-password/:token" component={ ResetPassword } />
       <Route name="signup" …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router

5
推荐指数
1
解决办法
2426
查看次数

反应子嵌套路由

我正在尝试在 Reactjs 中实现子/嵌套路由,下面是我发现的用于嵌套子路由的 2 种方法,但父路由工作正常,而父组件的子路由则不然。

以下是其工作原理的路线:

/ => Home Component
/login => Login Component
/register => Register Componet

/product/ => ProductListing Component 
/product/2 => ProductDetails Component [Expected but does not work]
/product/2/edit => ProductEdit Component [Expected but does not work]
Run Code Online (Sandbox Code Playgroud)

方法一

以下是我的主要路线文件:

export default function MainRouter() {
  return (
    <Router>
      <Route exact path="/" component={Home} />
      <Route exact path="/login" component={Login} />
      <Route exact path="/register" component={Register} />
      <Route exact path="/product" component={ProductRouter} />
    </Router>
  );
}
Run Code Online (Sandbox Code Playgroud)

和 Product 的子路由,如下所示在 ProductRouter.js 文件中

export default …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-router

3
推荐指数
1
解决办法
2436
查看次数