2017-02-24 9 views
1

シナリオは私はページ上にあります。 http://example.com/order-confirmationで、前のURLは/ paymentです。ユーザーが「戻る」ボタンを押すと、ホームページ、つまりURL「/」にリダイレクトしたいのですが、/ paymentページに戻ります。 私のアプリケーションでreact("^15.1.0")react-router("^2.4.1")react-router-redux("^4.0.4")を使用しています。別のURLにリダイレクトするonClickブラウザ戻る - Reactjs

私はStackOverflowまたはgitで複数回答を試みましたが、すべて無駄でした。 など。私が試した下記:

import { push } from 'react-router-redux'; 

<Route 
    path={`${AppPaths.ORDER_CONFIRMATION}/:orderId`} component={OrderConfirmationContainer} onLeave={(prevState) => routeBackHome(store, prevState)} 
    onEnter={routeEntryHandler(store, nonGuestUserValidator)} 
/> 

const routeBackHome = (store, prevState) => { 
    store.dispatch(push(`/`)); 
}; 

をマイルート:

export const createRoutes = store => (
<Route path={AppPaths.BASE} component={CheckoutAppContainer} onEnter={CheckoutAppContainer.fetchUserState(store)}> 
<IndexRedirect to={`${AppPaths.BASE}/${AppPaths.BAG}`} /> 
<Route component={CheckoutWizardContainer} onLeave={() => clearNotifications(store)}> 
    <Route 
    path={AppPaths.BAG} component={CartContainer} onLeave={() => clearNotifications(store)} 
    onEnter={() => updateStepNumber(store, 1)} 
    /> 
    <Route 
    path={AppPaths.PAYMENT} component={QuickCheckoutContainer} onLeave={() => clearNotifications(store)} 
    onEnter={checkoutEntryHandler(store, 3)} 
    /> 
</Route> 
<Route 
    path={`${AppPaths.ORDER_CONFIRMATION}/:orderId`} component={OrderConfirmationContainer} 
    onEnter={routeEntryHandler(store, nonGuestUserValidator)} 
/> 
</Route> 
); 

は、この動作をオーバーライドする方法はありますか? お願いします... ありがとうございます。

+0

あなたは、コードを投稿することができますか? – juancab

+0

編集した質問を参照してください。 –

+0

ミドルウェアを使用して、あなたのブラウザの履歴をあなたの店舗と同期させますか? – juancab

答えて

0

このコードを試すことができますか?

class YourComponent extends Component { 
    constructor(props) { 
     super(props); 

     this.onUnload = this.onUnload.bind(this); // if you need to bind callback to this 
    } 

    onUnload(event) { // the method that will be used for both add and remove event 
    const gohome = confirm('go home?') 
    if (gohome === true) { 
     console.log('yay') 
     window.location = 'http://yourhomepage.com' 
    }else { 
     console.log('yes') 
    } 
    } 

    componentDidMount() { 
    window.addEventListener("beforeunload", this.onUnload) 
    } 

    componentWillUnmount() { 
     window.removeEventListener("beforeunload", this.onUnload) 
    } 

    render() { 
    return (
     <div> 
      Try with window location 
     </div> 
    ) 
    } 
} 
+0

は動作していません。最後のURL、すなわち/支払いに行く。 –

+0

他のルートはどのように見えますか? – juancab

+0

@juancab:似たようなものですが、ここで問題はないと思います... –

0

次のことを試してみてください。

import { browserHistory } from 'react-router' 

import { push } from 'react-router-redux'; 

<Route 
    path={`${AppPaths.ORDER_CONFIRMATION}/:orderId`} component={OrderConfirmationContainer} onLeave={(prevState) => routeBackHome(store, prevState)} 
    onEnter={routeEntryHandler(store, nonGuestUserValidator)} 
/> 

const routeBackHome = (store, prevState) => { 
    browserHistory.push('/'); 
}; 
+0

これもうまくいきません... –

+0

'react-router'から{browserHistory}をインポートできません。 'react-router'には 'browserHistory'という名前のエクスポートが含まれていません。 –

関連する問題