首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Preact-路由器-处理来自子目录的路由

Preact-路由器-处理来自子目录的路由
EN

Stack Overflow用户
提问于 2018-05-10 14:40:49
回答 3查看 1.7K关注 0票数 0

我目前正在创建一个SPA,它可以包含并从任何路径运行。

目前,我创建的任何<Link />组件都会将客户端重定向回它所在域的根目录加上预期的路径。

react-router中,有一个设置起始基路径的属性;basename

这在preact-router中似乎不存在,我真的不想切换到react-router,因为它要大得多,而且我不会使用许多其他特性。

一个简单的路线例子:

代码语言:javascript
复制
<Router>
  <Route
    path="/"
    component={Home}
  />
  <Route
    path="/:slug"
    component={Merchant}
  />
</Router>

我在互联网上看到了几个帖子,暗示这是可能的,但是有了这么少的文档,拼凑起来就有点棘手了。

任何帮助都是非常感谢的。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-18 08:42:14

最后,我用自己的组件包装了preact-router LinkRouter。在那里,我可以在path属性值前面加上我的应用程序基路由,例如:

代码语言:javascript
复制
<MyRoute
   path="/"
   component={Home}
/>

然后在<MyRoute />的某个地方

代码语言:javascript
复制
const route = 'my/app/base/path';

let result = (route || '') + this.props.path;

result = result.replace(/([^:]\/)\/+/g, '$1');

然后使用结果值<Route path={result} />呈现<Route path={result} />默认组件。

票数 2
EN

Stack Overflow用户

发布于 2018-05-14 06:09:00

如果您正在寻找哈希路由,则如下所示:https://github.com/developit/preact-router#custom-history

票数 0
EN

Stack Overflow用户

发布于 2019-12-02 16:04:28

jhdevuk的回答为我指明了正确的方向。

下面的路由器类将完成这个任务(在TypeScript中):

代码语言:javascript
复制
    class SubfolderRouter extends preactRouter.Router {

        render(props: preactRouter.RouterProps, state: any) {
            if (state.url.indexOf(MY_FOLDER) == 0) {
                state = {
                    ...state,
                    url: state.url.substr(MY_FOLDER.length),
                };
            }
            return super.render(props, state);
        }
    }

如果您的应用程序生活在文件夹const MY_FOLDER = "/myfolder",那么这个路由器将忽略该文件夹的网址。如果用户导航到

代码语言:javascript
复制
/myfolder/home/index

然后路由器将查找URL /home/index,因为这是实际的路由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50275527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档