Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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
Javascript Reactstrap或React路由器v4';s未重定向部分地址链接更改_Javascript_Reactjs_Bootstrap 4_React Router V4_Reactstrap - Fatal编程技术网

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运行导航请求。这让我摆脱了这种老套的方法。