预期:当单击来自一个组件(PhotosList)的图像时,它会路由到具有指定url的另一个页面以查看另一个组件(图像详细信息)
现实:当点击图像时,两个组件呈现在同一页面上,但url不同。
使用“react Router dom”中的导入{BrowserRouter作为路由器、交换机、路由、链接};
这是返回的功能组件(PhotosList)
return (
<Router>
<div className="layout">
<Masonry gutter={"5 px"} columnsCount={3}>
{photosList.map((photo: any) => (
<Link to={"/details"}>
<img src={photo.download_url} />
</Link>
))}
</Masonry>
<button onClick={loadMore} className="btn-grad">
{isLoading ? "Loading..." : "Load More"}
</button>
<Switch>
<Route exact path={"/details"} component={ImageDetails}></Route>
</Switch>
</div>
</Router>
);
应用程序文件是
const App = () => {
return (
<div className="App">
<header>Album</header>
<PhotosList />
</div>
);
};
export default App;
据我所知,您已经呈现了PhotoList
组件,然后呈现了一个照片列表,每个照片都有一个链接到/细节
。
在同一组件中,您设置了/details
路由。
每当您单击重定向到/details
的链接时,
PhotoList
组件将(应该)卸载。卸载此组件后,路由
也将卸载,该路由设置应在/details
路由上呈现的组件。因此,您使用的是/details
,但路由器不知道应该呈现哪个组件,因为以下代码:
<Switch>
<Route exact path={"/details"} component={ImageDetails}></Route>
</Switch>
不再存在。
为了避免这种情况,不要把
Routes
放在应用程序的下面。路由应始终靠近顶层(路由器的子孙)。这使得项目更容易管理。我有超过100个路由的项目,我把我的路由分成单独的文件(例如,每个模块都有一个ModuleRoutes.js文件,我在其中为该模块设置路由),然后您可以创建一个Root路由器
组件,它呈现这些单独的JS文件(实际上是React组件),并且您在您的内呈现
Root路由器
通过创建一个包含每个路由详细信息的对象数组(路由名称、路径、路由组件、要传递给组件的函数/数据、定义为逻辑表达式的访问控制(真/假)(即
user.isLoggedIn==true
),您可以将其抽象得更高。通过采用这种抽象,您可以最大限度地减少错误的空间,因为当错误和bug以这种形式(对象)出现时,它们更容易被发现,而JSx占用更多的代码行,有混乱的缩进,并且通常不是很干净。
return (
<div className="layout">
<Masonry gutter={"5 px"} columnsCount={3}>
{photosList.map((photo: any) => (
<Link to={"/details"}>
<img src={photo.download_url} />
</Link>
))}
</Masonry>
<button onClick={loadMore} className="btn-grad">
{isLoading ? "Loading..." : "Load More"}
</button>
</div>
);
在应用程序文件中
const App = () => {
return (
<Router>
<div className="App">
<header>Album</header>
<PhotosList />
<Switch>
<Route exact path={"/photilist"} component={PhotosList}></Route>
<Route exact path={"/details"} component={ImageDetails}></Route>
</Switch>
</div>
</Router>
);
};
export default App;
在我的应用程序中,用户登录后我有一个主页和一些其他页面。问题是,当我在其中一个页面中刷新页面时,它会再次将我发送到主页。这是我的路线: 应用程序组件具有路由器出口 那么,我期待什么呢?首先,如果我是我的“列表”页面()并且我刷新了这个页面,它应该留在那里。在那一页。但现在它将我重定向到本地主机:4200/home。当然,当我单击一个列表项时,它应该将我发送到本地主机:4200/detail/ite
背景: 我已经开始为一家虚构的律师事务所构建一个Ionic应用程序,用于一般业务。以下是指向我的github repo的链接:https://www.github.com/jamesslater/boutiquesolicitors 它从一个登录页面开始,目前唯一接受的凭据是用户名:用户密码:123 登录后,应用程序将路由到“成员/仪表板”。我按照本教程学习了角度布线流程:https://devd
我有一些这样的路线 在NewUrlComponent中,我可以像这样轻松地获取数据 我遇到的问题是我在屏幕上有另一个组件,不知何故,我需要在另一个组件中显示该数据标题。我不知道这有可能吗?
我使用Reavt V6路由。 我正在努力让我的路线在游戏组件中工作。 在完全空白的页面中查看/测试结果。而它应该在gamecomponent中加载犯罪模块。访问/呈现gamecomponent,但/test不会呈现gamecomponent及其内部的路由。 我怎样才能让它工作? 访问url/crime会导致被加载,并且 应该上膛了。 app.js 专用路线: 游戏成分:
问题内容: 我有两个组成部分。我想从第二个组件中调用第一个组件的方法。我该怎么做? 这是我的代码。 第一部分 第二部分 问题答案: 你可以做这样的事情 使用静态
问题内容: 现在,我有一个div,它基本上是一个巨大的正方形,在div内,我还有另一个div,它是简单的文本,上面写着“ Upload File”,同时还有一个隐藏的input type = file元素。当用户按下div时,我要触发文件上传元素。到目前为止,我想出的代码是: 因此,我在CSS中将文件输入元素设置为。一旦他们在div id =“ test”中的任意位置单击,我想触发对文件上传元素的