簡體   English   中英

反應路由器和任意查詢參數:加載時頁面意外刷新?

[英]React Router and Arbitrary Query Params: Page Refreshes Unintentionally on Load?

在過去的幾周中,我一直在使用React Router取得巨大的成功,但是我遇到了一個似乎無法解決的問題。 每當將任意查詢參數附加到url(在我們的示例中,出於電子郵件中的URL跟蹤目的)時,您加載的頁面都會加載,然后自動刷新而不會發出警告。

給出最基本的路由設置:

var routes = (
  <Route handler={ResultsController}>
     <DefaultRoute handler={Results} />
  </Route>
);

和默認處理程序:

Router.run(routes, function (Handler, state) {
  React.render(<Handler params={state.params} />, domElement);
});

如果我導航到http://whatever.com/results一切正常,但是如果我導航到http://whatever.com/results?ref=track則頁面將刷新並重定向回http://whatever.com/results#/ 請注意,在哈希和斜杠附加queryParams會導致正確的行為; 問題是,其中許多鏈接都是在服務器端生成的,因此不希望以這種方式強制使用哈希。

我是否需要為queryParams設置通配符處理程序? 任何指向文檔的指針也將有所幫助。

編輯:
雖然這不能解決導致無意刷新的總體問題/錯誤,但我發現使用Router.HistoryLocation PushState選項加載路由可以允許queryParams預渲染:

Router.run(routes, Router.HistoryLocation, function (Handler, state) {
  React.render(<Handler params={state.params} query={state.query} />, domElement);
});

謝謝!

這里的問題是您使用的是Router.HashLocation ,如果您未指定默認位置,則為默認位置。

Router.run(routes, Router.HistoryLocation, function(...

將解決此問題,但您需要一個可以處理它的服務器。

如果仍然需要哈希位置,請將查詢放在# 后面 HashLocation而言, #之前的查詢不是它理解的位置的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM