Podążałem za tutorialem Tylera Mcginsnisa i trafiłem na ratunek routerowi reagowania, w szczególności z historią. Skończyło się kopiując jego kod verbatim po prostu zobaczyć, czy to tylko ja, ale ja wciąż sięReaktor routera nie powiodło się "historia", jest niezdefiniowany.
Warning: React.createElement: type is invalid -- expected a string (for built-
in components) or a class/function (for composite components) but got:
undefined. You likely forgot to export your component from the file it's
defined in.
Warning: Failed prop type: The prop `history` is marked as required in
`Router`, but its value is `undefined`. in Router
Uncaught TypeError: Cannot read property 'location' of undefined
at new Router (index_bundle.js:8347)
at index_bundle.js:19079
at measureLifeCyclePerf (index_bundle.js:18859)
at ReactCompositeComponentWrapper._constructComponentWithoutOwner (index_bundle.js:19078)
at ReactCompositeComponentWrapper._constructComponent (index_bundle.js:19064)
at ReactCompositeComponentWrapper.mountComponent (index_bundle.js:18972)
at Object.mountComponent (index_bundle.js:4070)
at ReactCompositeComponentWrapper.performInitialMount (index_bundle.js:19155)
at ReactCompositeComponentWrapper.mountComponent (index_bundle.js:19042)
at Object.mountComponent (index_bundle.js:4070)
Realizacja jest:
var React = require('react');
var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var hashHistory = ReactRouter.hashHistory;
var IndexRoute = ReactRouter.IndexRoute;
var Main = require('../components/Main');
var Home = require("../components/Home");
var PromptContainer = require('../containers/PromptContainer');
var routes = (
<Router history={hashHistory}>
<Route path='/' component={Main}>
<IndexRoute component={Home} />
<Route path='playerOne' header='Player One' component={PromptContainer} />
<Route path='playerTwo/:playerOne' header='Player Two' component={PromptContainer} />
</Route>
</Router>
);
module.exports = routes;
Co zauważyłem było to, że nie istnieje hashHistory
w module react-router
, ale raczej jest createBrowserHistory
wewnątrz modułu history
. Po doc API znalazłem, pomyślałem muszę nazwać tamtędy jak:
var BrowserHistory = require('history/createBrowserHistory);
const history = createBrowserHistory();
Doing która produkuje błąd createBrowserHistory is not a function
. Usunięcie parantez, powoduje te same błędy, co powyżej, stwierdzając, że historia to undefined
.
Kiedy loguję historię, jest ona z pewnością niezdefiniowana, co sugeruje, że problem związany jest z instrukcją importu, ale czy konsola nie mogłaby mi znaleźć ReactRouter.hashHistory
?
Rozumiem, że ten samouczek ma ponad rok i prawdopodobnie nastąpiły zmiany w interfejsie API, których po prostu nie znam i na tym polega mój problem. Każda pomoc jest doceniana!
Powracam do wersji 3, aby ukończyć samouczek, a następnie przejdę do interfejsu API w wersji 4, ale dobrze jest wiedzieć, że te zmiany zostały wprowadzone. Zaznaczę to jako odpowiedź, dla innych, dzięki! – JoeDahle
Wiele tras zawiera błąd: "Uncaught Error: A może mieć tylko jeden element podrzędny". Jak to naprawić? –
olefrank
@olefrank, jaka wersja routera? [To może pomóc] (https://github.com/ReactTraining/react-router/issues/4131), wyszukaj, gdzie jest odpowiedź z tagiem 'Switch' w routerze. – Nicholas