Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 直接调用子路径时未渲染React组件_Reactjs_React Router - Fatal编程技术网

Reactjs 直接调用子路径时未渲染React组件

Reactjs 直接调用子路径时未渲染React组件,reactjs,react-router,Reactjs,React Router,我有一个服务器端呈现的React应用程序,其中我使用HashRouter进行React路由(v5)。我的路线是这样的 <HashRouter basename="/"> <Layout {...config} /> </HashRouter> 当我点击localhost:8888/parent/并加载后,如果我在同一窗口中点击localhost:8888/parent/banner,则bannerPage组件呈现良好。 但是

我有一个服务器端呈现的React应用程序,其中我使用HashRouter进行React路由(v5)。我的路线是这样的

<HashRouter basename="/">
   <Layout {...config} />
</HashRouter>


当我点击
localhost:8888/parent/
并加载后,如果我在同一窗口中点击
localhost:8888/parent/banner
,则bannerPage组件呈现良好。 但是我直接点击了
localhost:8888/parent/banner
(在一个新选项卡中考虑),然后组件没有正确呈现

知道为什么会这样吗

另外,当我点击localhost:8888/parent/banner时,我可以看到LPComp(默认路由)也正在加载,然后它突然消失,bannerPage组件呈现不正确


提前感谢

由于您的路线基于prop/state
this.props.siteBanner.Red
,因此该行为是合理的。因此,第一件事是在输入该组件后放置一个
console.log

  console.log(this.props.siteBanner.Red)
在第一种情况下,您从其父组件访问此组件,这样很可能解决了道具问题

在第二种情况下,您可以直接到达它,当然也可以从它的父级到达,但很可能没有时间让道具快速解决。两种可能性

  • useEffect用于更新此变量
  • 需要单击鼠标才能获取值
  • setTimeout用于延迟
  • 回调用于获取此变量

你可以说在解决这个道具上有50毫秒的延迟,但是你需要自己找出原因。动态路由是更高级的东西,它很容易有永久路由。

感谢大家的及时响应,我能够通过从服务器端配置的静态路由器设置
location=(req.url)
来解决这个问题。通过这个例子,我得到了我错过的更大的画面。

这可能不足以回答您的问题,但要大致了解我可以说的是,您必须使所有路由独立,我所说的独立是指任何路由都不应依赖于任何路由的数据,无论是父路由,由于缺少加载或呈现html的数据或某些函数可能会失败等原因,导致无法正确加载…好的,这可能是个问题,但是当我点击/parent/bannerPage时,你知道为什么默认路由会在bannerPage组件加载之前出现并消失一秒钟吗?你是否在banner页面中配置了任何路由,如缺少某些数据,请转到主页或类似的内容。。。粗略的猜测,但必须see@pavankumar没有,没有更多的路线,这能回答你的问题吗?
  console.log(this.props.siteBanner.Red)