【问题标题】:Struggling with a regular expression for a route为路线使用正则表达式而苦苦挣扎
【发布时间】:2018-06-08 09:20:26
【问题描述】:

我正在使用 React Router 4。我只有一个组件(目前),我基本上希望路由匹配这个:

/
/home
/@prd78

如果是第三个,我希望@之后的部分成为参数。

这个我试过了,但是明显错了:

<BrowserRouter>
    <Route path="/|home|product|@:ref(\w+)/" component={App} />
</BrowserRouter>

我可以有不同的路线,但在这种情况下,应用程序将被加载多次。

感谢您的帮助。

【问题讨论】:

    标签: reactjs react-router-v4 react-router-dom


    【解决方案1】:
    <Route exact path="/" component={App} />
    <Route path="/home" component={App} />
    <Route path="/@:ref" component={App} />
    

    然后使用:

    const App = ({ match }) => (
        <div>
            <p>Ref: {match.params.ref}</p>
        </div>
    );
    

    【讨论】:

    • 这就是我提到的我做不到的,通过使用这样的3条路由,组件也加载了3次,所以我不能这样做。
    • 您是否尝试过使用exact?组件不应加载 3 次。
    • 是的,但这不会改变任何事情。这一切都太奇怪了。例如,对于 Angular 2+,这是开箱即用的。 React Router 实现这么简单的操作似乎很复杂:(
    • 我已经测试过了,它按预期工作,你确定你已经正确实现了吗?
    • 我相信是这样 :( 另外,从技术上讲,“精确”与组件只会被加载一次这一事实无关。我实际上从我的项目中完全删除了 react-router 并切换到“历史” " 我自己在 Redux 操作中处理路由:更少的代码,更好的性能,更容易阅读,不再有高阶函数,等等 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多