Reactjs 为什么自定义路由不起作用?

Reactjs 为什么自定义路由不起作用?,reactjs,react-router,react-router-dom,react-router-redux,Reactjs,React Router,React Router Dom,React Router Redux,我正在尝试构建一个既涉及私有路由又涉及公共路由的应用程序,因此我使用自定义私有路由和公共路由,但问题是,当我尝试发送组件时,它没有被呈现,我无法找出它出了什么问题 这里是沙箱的入口点,即处理公共和私人路线的路线 注意:自定义功能路由正在工作,但不是我的路由,即使我尝试通过一些自定义路由,如h1或它工作的东西。但不是我构建的那些。您必须为此url“/”使用路由属性“精确” 从文件: 精确-如果为true,则仅当路径与location.pathname匹配时才匹配 没错 请仔细阅读有关交换机的文档:

我正在尝试构建一个既涉及私有路由又涉及公共路由的应用程序,因此我使用自定义私有路由和公共路由,但问题是,当我尝试发送组件时,它没有被呈现,我无法找出它出了什么问题

这里是沙箱的入口点,即处理公共和私人路线的路线


注意:自定义功能路由正在工作,但不是我的路由,即使我尝试通过一些自定义路由,如h1或它工作的东西。但不是我构建的那些。

您必须为此url“/”使用路由属性“精确”

从文件:

精确-如果为true,则仅当路径与location.pathname匹配时才匹配 没错

请仔细阅读有关交换机的文档:

开关-渲染与 地点

每次的第一个子项将是该组件

因为比较通过下一个算法起作用:

“/”。包括(“/”)//true
“/write”.includes(“/”)//true
但有了确切的属性,下一个场景将起作用:

'/'=='/'///true
'/write'=='/'//错误

您必须为此url“/”使用路由属性“精确”

从文件:

精确-如果为true,则仅当路径与location.pathname匹配时才匹配 没错

请仔细阅读有关交换机的文档:

开关-渲染与 地点

每次的第一个子项将是该组件

因为比较通过下一个算法起作用:

“/”。包括(“/”)//true
“/write”.includes(“/”)//true
但有了确切的属性,下一个场景将起作用:

'/'=='/'///true
'/write'=='/'//错误
您必须使用“精确”from Route属性。因为
检查并呈现与位置匹配的第一个子路由。在本例中为“/”,您的所有路线都包含“/”


然后必须在路由数组中的属性组件中渲染组件

这是私人路线的最终目标:

const路由=[
{
路径:“/”,
组件:路径组件,
},
{
路径:'/write',
组成部分:,
},
{
路径:'/profile',
组成部分:,
},
{
路径:'/polls',
组成部分:,
},
{
路径:'/details',
组成部分:,
}
]
因为您正在使用管线的“渲染”属性

如果要在不发送组件的情况下发送组件,应使用路由的“组件”属性,但只能使用组件,不能呈现HTML代码。

必须使用路由属性的“精确”属性。因为
检查并呈现与位置匹配的第一个子路由。在本例中为“/”,您的所有路线都包含“/”


然后必须在路由数组中的属性组件中渲染组件

这是私人路线的最终目标:

const路由=[
{
路径:“/”,
组件:路径组件,
},
{
路径:'/write',
组成部分:,
},
{
路径:'/profile',
组成部分:,
},
{
路径:'/polls',
组成部分:,
},
{
路径:'/details',
组成部分:,
}
]
因为您正在使用管线的“渲染”属性

如果要在不发送组件的情况下发送组件,应该使用Route的“component”属性,但只能使用组件,不能呈现HTML代码。

有两个问题

  • 您需要为您的
    私人路线
    公共路线
  • 由于使用了
    渲染
    属性,因此需要返回元素而不是组件类,因此类似于
    但自定义组件需要以大写字母开头,因此需要重命名该元素


    另外一个问题是,对于大多数路由,组件是实际组件,但是对于
    /
    路由,您传递了一个元素,因此需要以不同的方式呈现它,这有两个问题

  • 您需要为您的
    私人路线
    公共路线
  • 由于使用了
    渲染
    属性,因此需要返回元素而不是组件类,因此类似于
    但自定义组件需要以大写字母开头,因此需要重命名该元素



    另外一个问题是,对于大多数路由,组件是实际组件,但是对于
    /
    路由,您传递了一个元素,因此需要以不同的方式渲染它

    我已经尝试过了,您可以尝试检查它。它仍然不起作用。这是@RaghavSharma,您必须将key={route.path}添加到每个列表项中,它将起作用。您可以在private route
    (component…=>return component
    ,但必须
    (component:component,…)=>return
    我已经尝试过了,您可以尝试检查它。它仍然不起作用。这里是@RaghavSharma,您必须将key={route.path}添加到每个列表项,它将起作用。您可以在私有路由
    (组件…=>返回组件
    ,但必须
    (组件:组件,…=>返回