További
Hogyan lehet a React Router v4-ben a History-ra tolni?
A React Router jelenlegi verziójában (v3) el tudok fogadni egy kiszolgálói választ, és a browserHistory.push
használatával a megfelelő válaszoldalra léphetek. Ez azonban a v4-ben nem áll rendelkezésre, és nem vagyok biztos benne, hogy mi a megfelelő módja ennek a kezelésnek.
Ebben a példában a Redux használatával a components/app-product-form.js meghívja a `this.props.addProduct(props)-t, amikor a felhasználó elküldi az űrlapot. Amikor a szerver sikert ad vissza, a felhasználó a Kosár oldalra kerül.
// 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
});
}
Hogyan tudok a React Router v4 függvényből átirányítást készíteni a Kosár oldalra?
316
3
A React Router v4 alapvetően különbözik a v3-tól (és a korábbiaktól), és nem tudod úgy használni a
browserHistory.push()
parancsot, mint korábban.Ez a vita kapcsolódónak tűnik, ha további információra van szükséged:
Ehelyett van néhány lehetőséged erre:
A
withRouter
magasrendű komponens használataEhelyett a
withRouter
magasrendű komponenst kell használnod, és ezt kell a history-ba toló komponenshez csomagolnod. Például:További információért nézd meg a hivatalos dokumentációt:
A "kontextus" API használata
A kontextus használata lehet az egyik legegyszerűbb megoldás, de mivel ez egy kísérleti API, instabil és nem támogatott. Csak akkor használd, ha minden más kudarcot vall. Íme egy példa:
Nézd meg a hivatalos dokumentációt a kontextusról:
Én így csináltam:
A
this.props.history.push('/cart');
használatával átirányíthatod a kosár oldalra, amely el lesz mentve a history objektumba.Jó szórakozást, Michael.
A
this.context.history.push
nem fog működni.Sikerült elérnem, hogy a push így működjön: