2017-01-04 26 views
0

私はリアクションルータを使用して反応するアプリケーションを持っていますv4。私のアプリの外に私はルータを更新する必要があるいくつかのリンクがあります。反応の外部からルータにアクセスするにはどうすればよいですか?私は何らかの形でウィンドウオブジェクトのBrowserRouterインスタンスを公開しますか?外部からの反応ルータ4の反応

+0

更新すると、コンポーネントの外からナビゲートする必要があることを意味しますか? –

+0

はい。私の一時的な解決策は、Appがマウントされ、 'this.context.router.transitionTo()'を呼び出すメソッドをウィンドウに公開することでした。理想的ではないが今のところ働く。 – Ben

答えて

0

t1; dr現在、良い解決策はありません。何かを実装する前に、v4のAPIが完成するまで待つべきでしょう。プロジェクトのさまざまな支店/リリースでこれを行う方法には、さまざまなアプローチがあります。最終リリースではどちらがうまくいくのでしょうか?

理想的な方法はv2/3に似ています。これらのバージョンでは、browserHistoryhashHistoryが利用可能になります。プロジェクト全体からインポートでき、常に同じhistoryインスタンスにアクセスできます。

独自の履歴インスタンスを同様の方法で作成できます。

// history.js 
import { createBrowserHistory } from 'history' 

// configure your history instance here if you need to 
export default createBrowserHistory() 

historyインスタンスをプロジェクト全体でインポートすることができます。

残念ながら、現在のバージョンのv4で公開されているすべてのルータコンポーネントでは、既存の履歴インスタンスを渡すことはできません。代わりに、彼らはすべてhistoryインスタンスを作成します。これを回避するには、historyインスタンスを支柱とする独自のルータコンポーネントを作成する必要があります。どのようにこれを行うかは、異なるバージョン間で全く異なっています。

関連する問題