Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React路由器Redux始终显示第一条路由_Javascript_Reactjs_React Router Redux - Fatal编程技术网

Javascript React路由器Redux始终显示第一条路由

Javascript React路由器Redux始终显示第一条路由,javascript,reactjs,react-router-redux,Javascript,Reactjs,React Router Redux,React router redux始终显示第一条路由。无论我输入哪个url,它都将呈现第一条路由 Index.js文件 <ConnectedRouter history={history}> <App /> </ConnectedRouter> export default function App() { return ( <Switch> <Route to="/"

React router redux始终显示第一条路由。无论我输入哪个url,它都将呈现第一条路由

Index.js文件

<ConnectedRouter history={history}>
   <App />
</ConnectedRouter>
export default function App() {
      return (
            <Switch>
              <Route to="/" component={Dashboard} key={1} />;         
              <Route to="/icons" component={Icons} key={2} />;         
           </Switch>
      );
    }

App.js文件

<ConnectedRouter history={history}>
   <App />
</ConnectedRouter>
export default function App() {
      return (
            <Switch>
              <Route to="/" component={Dashboard} key={1} />;         
              <Route to="/icons" component={Icons} key={2} />;         
           </Switch>
      );
    }
导出默认函数App(){
返回(
;         
;         
);
}

只需将exact={true}添加到路由,默认exact设置为false,只需查看一下


这是因为示例中的路由配置不正确。您需要将精确的道具添加到第一条路线

例如:

<Switch>
    <Route exact to="/" component={Dashboard} />;         
    <Route to="/icons" component={Icons} />;         
</Switch>

;         
;         
如果不将“精确”添加到“/”路由,则它将始终匹配,因为其他每个路由都有/作为其一部分

我的建议是默认情况下将所有路由定义为精确路由,并且仅在需要时设置非精确路由,例如:

<Switch>
    <Route exact to="/" component={Dashboard} key={1} />;         
    <Route exact to="/icons" component={Icons} key={2} />;  
    <Route to="/icons/:iconId" component={IconDetails} key={3} />;       
</Switch>

;         
;  
;       

当您使用开关时,您需要添加路由,其路径是结尾处其他路由的前缀,因为开关匹配并呈现匹配的第一条路由

export default function App() {
      return (
            <Switch>
              <Route to="/icons" component={Icons} key={2} />
              <Route to="/" component={Dashboard} key={1} />              
           </Switch>
      );
    }
导出默认函数App(){
返回(
);
}

而且你不需要
在JSX语句的末尾

我做了;但这仍然没有什么区别。两个路由“/”&“/图标”都显示了“仪表板”组件:(只需将to替换为path,path to表示重定向到另一个路由…标记to主要用于404或类似的情况下,将to替换为path就可以了,但仍然存在一个问题,如果我设置path=“/Dashboard”它可以工作,但当我设置path=“/”时它不起作用:/done,1.将connectedRouter更改为BrowserRouter。2.将替换为path。3.将“/”放在路由列表的末尾,我做了;和;但仍然没有任何区别。两个路由“/”和“/图标”都显示“仪表板”组件:(您使用的是什么路由器。React-router dom还是React-router?哪个版本?另外,请尝试使用普通路由器,而不是已连接的路由器,因为connectedrouter用于同构应用程序,其中node.js expressjs将为您处理路由。React-router-dom 4.3.1尝试使用React-router dom中的普通路由器仍然没有l。)uck:(我可以分享github代码,你能帮我吗?)既然现在还没有维护,你为什么要使用connectedRouter。我用的是react样板,他们用connectedRouter代替了路由器