withrouter react navlink hashrouter reactjs react-router

reactjs - navlink - redirect react router v4



React router-Actualiza el hash de URL sin volver a renderizar la página (3)

Utilizando react-router estoy buscando una manera de actualizar la URL / hash de la página, sin que el enrutador vuelva a renderizar toda la página.

Estoy desarrollando un carrusel de página completa y me gustaría que cada diapositiva tuviera su propia URL (lo que permite al usuario actualizar la página y volver a la diapositiva correcta). Más tarde, el carrusel se deslizará de manera similar a esta demostración , lo que significa que la siguiente diapositiva se representará previamente.

Una versión reducida de mi carrusel está disponible here .

El cambio de diapositiva actual se ve así:

onClickLeft: function() { this.setState({ selected: this.state.selected - 1 }); }

Esto funciona bien, sin actualizaciones de URL. Lo que realmente quiero es:

mixin: [Navigation], onClickLeft: function() { this.transitionTo(''carousel-slide'', {num: this.state.selected + 1}); }

Esto establecería el apoyo de la diapositiva actual, permitiendo que el carrusel se anime. Sin embargo, el uso de este método ahora hace que la página se vuelva a generar y no se muestre ninguna animación.

He visto el ReactCSSTransitionGroup utilizado para las transiciones de ruta, sin embargo, esto parece estar orientado a renderizar una nueva página y hacer la transición de la anterior.

Si ya hay una manera de lograr lo que estoy buscando y lo he perdido, ¿podría alguien indicarme la dirección correcta?


1.0

react-router ya no establece una clave en sus rutas. Si necesita configurar una clave desde un controlador de ruta, póngala en un elemento circundante.

return ( <div key={this.props.params.bookId}> {this.props.children} </div> );

0.13

Ahora es <ReactRouter.RouteHandler key="anything" /> , pero esto ya no es realmente necesario debido a los cambios en el enrutador de reacción. Ver el registro de cambios para más detalles.

0.12

Actualmente, react-router establece una clave en su controlador en función de la ruta actual. Cuando reacciona hace su diferencia y se da cuenta de una clave diferente, arroja todo el subárbol tanto en dom virtual como real, y re-emite.

Para evitar esto, puede anular la clave del enrutador de reacción al usar activeRouteHandler ()

this.props.activeRouteHandler({key: "anything"})


Es un dolor trabajar con react-router porque implica romper cambios en cada versión principal y secundaria.

React Router v2.0 rc5

import { hashHistory } from ''react-router'' this.props.location.query.t = key; hashHistory.replace(this.props.location);


Para React Router v4 , debe usar el history y pasarlo como apoyo al Router . Router luego pasará el objeto history a su componente como prop y podrá usarlo así:

// In your component this.props.history.push("#testing")

Archivo de historia

// history.js import createHistory from "history/createBrowserHistory"; export default createHistory();

Luego, donde sea que esté declarando su enrutador, pase el apoyo histórico.

import history from "./history"; import { Router } from "react-router-dom"; <Router history={history}> // ... Your component </Router>