【问题标题】:Send variables from one class to routes.js (without props)将变量从一个类发送到 routes.js(不带道具)
【发布时间】:2020-04-03 11:17:27
【问题描述】:

我正在尝试使 React 路由路径动态化,为此我需要将变量 clickedSubprojectName 发送到我的 routes.js。

现在我的routes.js 看起来像这样:

import React from 'react';

const Projects = React.lazy(() => import('./views/Projects'));
const Subproject= React.lazy(() => import('./views/Subproject'));

const routes = [
  { path: '/projects', exact: true, name: 'Projects', component: Projects },
  { path: "/projects/subprojects", name: 'Subproject', component: Subproject},

];

export default routes;

在我的Projects.js 中,我创建了一个state variable,它保存了用户单击的子项目的名称。我想将此变量从我的 Projects 类传递给我的 routes.js 以便我可以在路由中设置路径,例如:

{ path: "/projects/"+clickedSubprojectName, name: 'Subproject', component: Subproject}

我已经尝试从我的Projects.js 中导出一个常量变量,如下所示:

    export const clickedSubprojectName={
      clickedSubprojectName: this.state.clickedSubprojectName}

然后在我的 routes.js 中导入 import { clickedSubprojectName} from './views/Subproject' 但这并没有真正起作用。这会在 Projects 组件第一次渲染时将 clickedSubprojectName 设置为状态变量的默认值,并且在状态变量更改时不会更新。

希望有人能解决这个问题,因为我还没有在 stackoverflow 上找到任何东西

谢谢

【问题讨论】:

    标签: reactjs routes react-router core-ui


    【解决方案1】:

    对于动态路由......你可以使用类似......

    { path: "/projects/:subproject", name: 'Subproject', component: Subproject},
    

    你可以通过history.push("/projects" + this.state.clickedSubprojectName)调用这条路由

    export const clickedSubprojectName={
          clickedSubprojectName: this.state.clickedSubprojectName}
    

    这绝对行不通。这个变量被导出一次并导入一次。所以它总是会返回默认值。

    【讨论】:

    • 非常感谢,它成功了 :-) 路径中的“/:subproject”代表什么?有没有办法根据调用的子项目来设置{ path: "/projects/:subproject", *name*: 'Subproject', component: Subproject} 中的名称也是动态的?
    • 很高兴.. 成功了.. /:subproject 是嵌套路由的一个示例,它可以接受动态值作为其路径名。如果你使用钩子,你也可以使用useParams()钩子在组件内部获取subproject的值。
    • 我不确定.. 为什么要在路由中使用名称属性。但如果我有完整的代码,我可以让它工作。另外,如果有帮助,请不要忘记投票并接受我的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2011-12-05
    • 2014-01-25
    • 1970-01-01
    • 2012-12-08
    • 2017-12-30
    相关资源
    最近更新 更多