Próbuję programowo trasować przy użyciu this.props.history.push(..)
, ale nie wydaje się działać.React-router v4 this.props.history.push (...) nie działa
Oto router:
import {
BrowserRouter as Router,
Route
} from 'react-router-dom';
<Router>
<Route path="/customers/" exact component={CustomersList} />
<Route path="/customers/:id" exact component="{Customer} />
</Router>
W CustomerList, lista klientów jest renderowane. Kliknięcie klienta (li) powinno skierować aplikację do Klienta:
import { withRouter } from 'react-router'
class Customers extends Component {
static propTypes = {
history: PropTypes.object.isRequired
}
handleCustomerClick(customer) {
this.props.history.push(`/customers/${customer.id}`);
}
render() {
return(
<ul>
{ this.props.customers.map((c) =>
<li onClick={() => this.handleCustomerClick(c)} key={c.id}>
{c.name}
</li>
</ul>
)
}
}
//connect to redux to get customers
CustomersList = withRouter(CustomersList);
export default CustomersList;
Kod jest częściowy, ale doskonale ilustruje sytuację. Co się dzieje, że pasek adresu przeglądarki zmienia się odpowiednio do historii.push (..), ale widok nie aktualizuje się, komponent klienta nie jest renderowany, a lista klientów jest tam nadal. Jakieś pomysły?
Witam, wierzę, że tak naprawdę dzieje się tak, że oba komponenty są zgodne i oba komponenty są renderowane. Czy możesz sprawdzić, czy oba komponenty wykonują swoje odpowiednie 'componentDidMount'? –
@FakundoLaRocca Mają 'dokładne' na obu trasach – Li357
Tak, wiem, Ale miałem do czynienia z podobnymi problemami. Właśnie dlatego pytam. –