wake-up-neo.com

Wie lade ich eine Seite mit dem reakt-Router neu?

Ich kann in dieser Datei ( https://github.com/ReactTraining/react-router/blob/v0.13.3/modules/createRouter.js ) sehen, dass es eine Aktualisierungsfunktion gibt, aber ich habe keine Ahnung, wie nennen. Ich bin ein relativ neuer Reaktions-Router. Ich habe ihn nur verwendet, um ein paar Mal mit Hilfe von hashHistory zwischen einigen Seiten zu wechseln. 

Ich versuche gerade, es so zu verwenden, dass der Benutzer bei einem fehlgeschlagenen Installationsvorgang die Option "Wiederholen" erhält, die ich ausführen möchte, indem er die Seite aktualisiert, auf der die Installation stattfindet (die Seite, auf der sich der Benutzer gerade befindet). Jede Hilfe wäre dankbar.

Dies ist eine Knoten-App, die auf Elektron läuft, keine Web-App.

4
Sheriff

Sie brauchen react-router dafür nicht wirklich. Sie können einfach location.reload verwenden:

location.reload();

Auch die Version des Reakt-Routers, mit der Sie verlinkt haben, ist sehr alt. Ich denke, es ist eine Verknüpfung zu v1, wenn sie gerade auf v4 läuft.

5
Austin Greco

Möglicherweise versuchen Sie, ein Verlaufsobjekt einzuschieben und binden dann Ihre Komponente mit withrouter oder verwenden window.location.href = url umleiten ..

1
Navnath Adsul

Ich vermute, dass Sie React-Router verwenden. Ich werde meine Antwort aus einem anderen Beitrag kopieren Sie haben also nur wenige Möglichkeiten, dies zu tun. Derzeit ist meine Lieblingsmethode die Verwendung einer anonymen Funktion in der Komponente prop: 

<Switch>
  <Route exact path="/" component={()=><HomeContainer/>} />
  <Route exact path="/file/:itemPath/:refHash" component={()=><File/>} />
  <Route exact path="/:folderName" component ={()=><Folder/>}/>
</Switch>

Oder wenn Sie mit aktuellen URL-Parametern aktualisieren möchten, benötigen Sie eine zusätzliche Route (Reload) und spielen ein wenig mit dem Router-Stack:

reload = ()=>{
 const current = props.location.pathname;
 this.props.history.replace(`/reload`);
    setTimeout(() => {
      this.props.history.replace(current);
    });
}

<Switch>
  <Route path="/reload" component={null} key="reload" />
  <Route exact path="/" component={HomeContainer} />
  <Route exact path="/file/:itemPath/:refHash" component={File} />
  <Route exact path="/:folderName" component ={Folder}/>
</Switch>

<div onCLick={this.reload}>Reload</div>
1
Darko Pranjic

Sie könnten this Workaround versuchen:

// I just wanted to reload a /messages page
history.pushState(null, '/');
history.pushState(null, '/messages');
1

Sie können dies zum Aktualisieren der aktuellen Route verwenden:

import createHistory from 'history/createBrowserHistory'
const history = createHistory();
history.go(0)
1
Sumit Kumar