【问题标题】:Create dynamic route using list of string as paths in React JS with BrowserRouter在带有 BrowserRouter 的 React JS 中使用字符串列表作为路径创建动态路由
【发布时间】:2021-11-10 13:45:31
【问题描述】:

下面是我的路由器的当前实现,它有点硬编码和冗余。 我有一个包含所有路径的对象,例如如下

path = ["physical-health","general-health","wellbeing"];

我想让它动态化以减少硬编码并使其更具可扩展性。 像这样。

for (var i = 0; i < path.length-1; i++) {
        <Route exact path={this.state.basePath + path[i]} render={() => <Welcome />} />
    } 

但它似乎在 BrowserRouter 中不起作用。

render() {
        return(
            <BrowserRouter history={history}>
                <div className="">
                    <div id="maincontent">
                        <Route exact path={this.state.basePath +"/physical-health"} render={() => <Welcome />} />
                        <Route exact path={this.state.basePath +"/general-health"} render={() => <Welcome />} />
                        <Route exact path={this.state.basePath +"/wellbeing"} render={() => <Welcome />} />
                    </div>
                </div>
            </BrowserRouter>
        );
    }

【问题讨论】:

    标签: javascript reactjs react-router jsx url-routing


    【解决方案1】:

    你可以使用 .map() 来做你正在寻找的东西:

    path = ["/physical-health","/general-health","/wellbeing"];
    path.map(p => <Route exact path={this.state.basePath + p} render={() => <Welcome />} />)
    

    另一种方式:

    path = ["physical-health","general-health","wellbeing"];
    path.map(p => <Route exact path={`${this.state.basePath}/${p}`} render={() => <Welcome />} />)
    

    完整示例:

    render() 
    {
        const path = ["physical-health","general-health","wellbeing"];
        return(
            <BrowserRouter history={history}>
                <div className="">
                    <div id="maincontent">
                        {path.map(p => <Route exact path={`${this.state.basePath}/${p}`} render={() => <Welcome />} />)}
                    </div>
                </div>
            </BrowserRouter>
        );
    }
    

    【讨论】:

    • 谢谢@wrxsti 我实现了你的解决方案,这就是我想要的。谢谢你的帮助。 :)
    • @jitendrarautela 没问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2016-03-31
    • 1970-01-01
    • 2022-06-11
    • 2022-11-15
    相关资源
    最近更新 更多