Περισσότερα
Πώς να προωθήσετε το Ιστορικό στο React Router v4;
Στην τρέχουσα έκδοση του React Router (v3) μπορώ να δεχτώ μια απόκριση διακομιστή και να χρησιμοποιήσω το browserHistory.push
για να μεταβώ στην κατάλληλη σελίδα απόκρισης. Ωστόσο, αυτό δεν είναι διαθέσιμο στην v4 και δεν είμαι σίγουρος ποιος είναι ο κατάλληλος τρόπος για να το χειριστώ.
Σε αυτό το παράδειγμα, χρησιμοποιώντας το Redux, το components/app-product-form.js καλεί το this.props.addProduct(props)
όταν ένας χρήστης υποβάλλει τη φόρμα. Όταν ο διακομιστής επιστρέφει επιτυχία, ο χρήστης μεταφέρεται στη σελίδα του Καλαθιού.
// actions/index.js
export function addProduct(props) {
return dispatch =>
axios.post(`${ROOT_URL}/cart`, props, config)
.then(response => {
dispatch({ type: types.AUTH_USER });
localStorage.setItem('token', response.data.token);
browserHistory.push('/cart'); // no longer in React Router V4
});
}
Πώς μπορώ να κάνω ανακατεύθυνση στη σελίδα του Καλαθιού από τη λειτουργία για το React Router v4;
316
3
Το React Router v4 είναι θεμελιωδώς διαφορετικό από το v3 (και τα προηγούμενα) και δεν μπορείτε να κάνετε το
browserHistory.push()
όπως παλιά.Αυτή η συζήτηση φαίνεται να σχετίζεται αν θέλετε περισσότερες πληροφορίες:
Αντ' αυτού έχετε μερικές επιλογές για να το κάνετε αυτό:
Χρησιμοποιήστε το συστατικό υψηλής τάξης
withRouter
.Αντ' αυτού θα πρέπει να χρησιμοποιήσετε το συστατικό υψηλής τάξης
withRouter
και να το τυλίξετε στο συστατικό που θα προωθήσει στο ιστορικό. Για παράδειγμα:Έτσι το έκανα:
Χρησιμοποιήστε
this.props.history.push('/cart');
για να ανακατευθύνετε στη σελίδα του καλαθιού που θα αποθηκευτεί στο αντικείμενο ιστορικού.Καλή διασκέδαση, Michael.
Το
this.context.history.push
δεν θα λειτουργήσει.Κατάφερα να κάνω το push να λειτουργεί ως εξής: