Nicht genau. Aber es gibt sogar eine bessere Lösung.
Sie sollten die Bootstrap-Datei von Ihrer React-App trennen. Bootstrap-Datei, die Ihre App lädt und einige zusätzliche Parameter von außen weiterleitet.
In Ihrer Situation werden Sie zwei Bootstrap-Dateien erstellen, eine für Elektron - mit MemoryHistory (ich denke, es ist besser für Elektron) und die zweite für Browser mit Browser-Verlauf.
Beispiel der Bootstrap-Datei für Elektronen index electron.jsx:
import React from "react";
import ReactDOM from "react-dom";
import { createMemoryHistory } from "react-router";
import App from "./App.jsx";
const initialState = window.__INITIAL_STATE__;
const config = window.__CONFIG__;
const history = createMemoryHistory("begin-path");
ReactDOM.render(
<App
config={config}
history={history}
initialState={initialState}
/>, document.getElementById("root"));
Beispiel für Bootstrap-Datei für Browser-Index-browser.jsx:
import React from "react";
import ReactDOM from "react-dom";
import { browserHistory } from 'react-router';
import App from "./App.jsx";
const initialState = window.__INITIAL_STATE__;
const config = window.__CONFIG__;
ReactDOM.render(
<App
config={config}
history={history}
initialState={initialState}
/>, document.getElementById("root"));
In meinen Beispielen Unterschied ist klein (nur Geschichte), aber Sie können mehr Änderungen vornehmen. Wie Sie sehen, stelle ich auch zusätzliche Parameter von extern (initialState, config) zur Verfügung;
Und wie Ihre App sollte:
import React from 'react';
import { Router, Route } from 'react-router';
class App extends React.Component {
static propsTypes = {
history: React.PropTypes.object,
config: React.PropTypes.object,
initialState: React.PropTypes.object
};
render() {
return (
<Router history={this.props.history}>
<Route ...>
...
</Route>
</Router>
);
}
}
export default App;
Above-Code ist nur Empfängnis. Es ist von meinem Projekt, wo ich veraltete Dinge entfernt habe. Daher kann es ohne irgendeine Änderung nicht funktionieren
Jetzt für Elektron verwenden Sie index-electron.jsx, und für Browser index-browser.jsx. Der meiste Code ist wiederverwendbar über beide envs. Und es ist sehr flexibel.