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}添加到每个列表项,它将起作用。您可以在私有路由(组件…=>返回组件
,但必须(组件:组件,…=>返回