¿Cómo puedo pasar a usar https://cdnjs.cloudflare.com/ajax/libs/react-router/4.0.0-2/react-router.min.js desde https://cdnjs.cloudflare.com/ajax/libs/react-router/3.0.1/ReactRouter.min.js ? https://cdnjs.cloudflare.com/ajax/libs/react-router/3.0.1/ReactRouter.min.js ?
Ejemplo usando 3.x a continuación.
HTML
<script src="https://unpkg.com/react@15.4.2/dist/react.min.js"></script> <script src="https://unpkg.com/react-dom@15.4.2/dist/react-dom.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-router/3.0.1/ReactRouter.min.js"></script>JS
let { Router, IndexRoute, Redirect, Route, Link, browserHistory } = ReactRouter; history.replaceState(0,0,'/'); const Main = () => <Router history={browserHistory}> <Route path='/' component={App}> <IndexRoute component={Home}/> <Route path='map' component={Map}/> <Route path='settings' component={Settings}/> <Redirect from='foo' to='/' /> <Route path='*' component={NotFound}/> </Route> </Router> const App = props => <div> <Navigation> <Link to='/map'>Map</Link> <Link to='/settings'>Settings</Link> <Link to='/foo'>Foo</Link> </Navigation> {props.children} </div> const Navigation = props => <nav {...props} /> const Home = () => <h1>Home</h1> const Map = () => <h1>Map</h1> const Settings = () => <h1>Settings</h1> const NotFound = (props) => <h1>404 - Not Found</h1> ReactDOM.render(<Main />, document.body);Véalo en acción en: https://jsfiddle.net/developit/nvpr63eg/
Si me muevo a cualquiera de las versiones 4.x alojadas en CDN, aunque no funciona (código inalcanzable después de la declaración de devolución).
Pude configurarlo con redux cambiando algunas cosas:
Primero, browserHistory ya no está definido en react-router . Una forma de recuperarlo es usar el history del paquete.
Deberá instalar (redux opcional):
npm i -S history react-router react-router-redux En lugar de intentar importar el uso del historial del browserHistory :
import { createBrowserHistory } from 'history';Si desea usar redux, importe esto y agréguelo a sus reductores combinados:
import { routerReducer as routing } from 'react-router-redux'; combineReducers({ home, about, routing, // new }); A continuación, crea el objeto de history .
// redux import { syncHistoryWithStore } from 'react-router-redux'; const history = syncHistoryWithStore(createBrowserHistory(), store); // regular const history = createBrowserHistory(); Luego cambie su enrutador para usar el nuevo objeto de history
<Router history={ history } children={ Routes } />Todo lo demás debería ser igual.
Si alguien se encuentra con The prop history is marked as required in Router, but its value is undefined.
Es porque browserHistory ya no está disponible en react-router, vea la publicación para usar el paquete de historial en su lugar.
Relacionada
Esta es una respuesta complementaria a la que Paul S publicó anteriormente. El crédito aún debe ir a Paul por publicarlo.
La razón m que complementa la respuesta es bcoz:-
pasos de hilo:
yarn add react-router yarn add react-router-dompaquete.json:
"react": "^15.6.1", "react-dom": "^15.6.1", "react-router": "^4.1.1", "react-router-dom": "^4.1.1"índice.js:
import React from 'react'; import ReactDOM from 'react-dom'; import { Switch, Redirect, Route} from 'react-router'; import {BrowserRouter, Link} from 'react-router-dom'; //let { BrowserRouter, Switch, Redirect, Route, Link } = ReactRouter; const Main = () => <BrowserRouter> <App> <Switch> <Route exact path='/' component={Home}/> <Route path='/map' component={Map}/> <Route path='/settings' component={Settings}/> <Route path='/foo' component={Foo}/> <Route component={NotFound}/> </Switch> </App> </BrowserRouter> const App = props => <div> <Navigation> <Link to='/map'>Map</Link> <Link to='/settings'>Settings</Link> <Link to='/foo'>Foo</Link> </Navigation> {props.children} </div> const Navigation = props => <nav {...props} /> const Home = () => <h1>Home</h1> const Map = () => <h1>Map</h1> const Settings = () => <h1>Settings</h1> const Foo = () => <Redirect to='/' /> const NotFound = (props) => <h1>404 - Not Found</h1> ReactDOM.render(<Main />, document.body);Debería haber una guía de actualización más cerca del lanzamiento completo. Adapté su código para la próxima versión beta en lugar del alfa actual. La versión beta aún no se ha lanzado, por lo que lamentablemente no hay una versión alojada de React Router con la que pueda probar esto.
let { BrowserRouter, Switch, Redirect, Route, Link } = ReactRouter; const Main = () => <BrowserRouter> <App> <Switch> <Route exact path='/' component={Home}/> <Route path='/map' component={Map}/> <Route path='/settings' component={Settings}/> <Route path='/foo' component={Foo}/> <Route component={NotFound}/> </Switch> </App> </BrowserRouter> const App = props => <div> <Navigation> <Link to='/map'>Map</Link> <Link to='/settings'>Settings</Link> <Link to='/foo'>Foo</Link> </Navigation> {props.children} </div> const Navigation = props => <nav {...props} /> const Home = () => <h1>Home</h1> const Map = () => <h1>Map</h1> const Settings = () => <h1>Settings</h1> const Foo = () => <Redirect to='/' /> const NotFound = (props) => <h1>404 - Not Found</h1> ReactDOM.render(<Main />, document.body);