Javascript Reactstrap或React路由器v4';s未重定向部分地址链接更改
在我的标题中Javascript Reactstrap或React路由器v4';s未重定向部分地址链接更改,javascript,reactjs,bootstrap-4,react-router-v4,reactstrap,Javascript,Reactjs,Bootstrap 4,React Router V4,Reactstrap,在我的标题中 <NavItem> <NavLink tag={Link} to="/template/editor">New Template</NavLink> </NavItem> 新模板 在我的路由器页面 <BrowserRouter> <div className="container-fluid"> <Header /> <section className="pa
<NavItem>
<NavLink tag={Link} to="/template/editor">New Template</NavLink>
</NavItem>
新模板
在我的路由器页面
<BrowserRouter>
<div className="container-fluid">
<Header />
<section className="page-content">
<Route exact path="/" component={HomePage} />
<Route exact path="/template/editor/:id?" component={Authenticate(EditorPage)} />
</section>
</div>
</BrowserRouter>
如果我在我的主页(/)上并单击新模板链接(/Template/editor),它会将我重定向到新模板页面。但是,如果我在(/template/editor/3)上,并单击新模板链接(/template/editor),地址栏会更新,但页面不会被路由。我确信我遗漏了一些简单的东西,但我不知道是什么。我不确定问题出在哪里,但我相信您尝试做的是:
<BrowserRouter>
<div className="container-fluid">
<Header />
<section className="page-content">
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/template/editor/:id?" component={Authenticate(EditorPage)} />
</Switch>
</section>
</div>
</BrowserRouter>
(注意我使用了交换机来自反应路由器dom
包)
另外,您说您正在使用react redux
存在一个已知问题,视图未更新 您是否使用react-redux和connect
可能?@Tomasz是的,为什么?可能与此相关:它看起来像是我的问题。我把开关修好了。但是,由于性能原因,我对使用pure:false犹豫不决。是否有一个“正确的方法”我应该设计应用程序,这样我就不会有这个问题?withRouter选项是更好的方式吗?@SILENT是的,这有点“黑客”。connect
会比较道具,如果没有任何更改,则不会重新渲染(即使应用程序位置已更改)。您需要指示connect
始终使用{pure:false}
或。。。您也可以使用路由器的(如我链接的问题中所述)传递react路由器道具,这些道具会随着位置的变化而变化。我现在可以通过我的redux运行导航请求。这让我摆脱了这种老套的方法。