2017-05-10 42 views
9

Używam następujący prosty kod navReact routera 4 nie aktualizuje widok na linku, ale robi na odświeżeniu

<Router> 
    <Switch> 
    <Route exact path='/dashboard' component={Dashboard} /> 
    <Route path='/dashboard/accounts' component={AccountPage} /> 
    </Switch> 
</Router> 

<NavLink exact to={'/dashboard'} 
     disabled={this.props.item.disabled} 
     activeClassName='active'> 

<NavLink exact to={'/dashboard/accounts'} 
     disabled={this.props.item.disabled} 
     activeClassName='active'> 

Zmiany URL, ale widok nie. Zmienia się to jednak po odświeżeniu strony lub ręcznym przejściu do tego adresu URL.

+0

jest Twoim komponentem związanym z reagentem-reduktorem? –

+0

tak ........... – ilyo

+1

Wtedy myślę, że prawdopodobnie masz ten sam problem, który opisałem w tej odpowiedzi http://stackoverflow.com/questions/43892050/react-router-4-x- privateroute - nie działa po podłączeniu do redux/43892528 # answer-43892528 –

Odpowiedz

7

To dlatego react-reduxconnect sposób realizuje shouldComponentUpdate co spowoduje składnik nie renderowanie gdy podpory nie uległ zmianie. A to jest teraz w konflikcie z routerem reagującym 4.

Aby tego uniknąć, można przekazać {pure: false} do connect, jak opisano w react-redux troubleshooting section.

Innym sposobem jest użycie withRouter HOC lub podanie location podpory, jak described in DOCS.

6

Można również użyć:

import { withRouter } from 'react-router-dom'; 

A potem na domyślny eksportu, robisz tak:

export default withRouter(connect(mapStateToProps, {})(Layout)); 

Bo kiedy masz eksport połączyć, trzeba powiedzieć, że składnik będzie korzystał z routera.

Powiązane problemy