2017-04-10 4 views
1

React Routerにはフックが必要です。ユーザーがページ解析データに移動するたびに、私たちのサーバーに送信されます。第三者のライブラリなしでReact Router Domのフックを作成するにはどうすればよいですか?


これは、すべてのバックグラウンドでhappendsので、私は離れて開発者からこのネットワークコール抽象的にしたいので、すべてのページにする必要があります。開発者が作成するすべてのルートに分析イベントを手動で配置する必要はありません。私は反応ルータのためのミドルウェアのいくつかの種類が必要です。

現在、react-router-domライブラリを使用しています。私はソースコードを調べましたが、イベントにフックする方法は見つかりませんでした。または事象のいかなる概念であってもよい。

私はそれらがreact-router-hookであることがわかりますが、そのパッケージはreact-routerパッケージに依存していますが、これは使用しません。そして正直なところ、単純な振る舞いのために新しい外部ライブラリを導入することには驚きません。

私はいつもネイティブのRouteオブジェクトをreact-router-domからインポートして、私自身の動作を実装するためのラッパーを作成すると思います。私は第三者図書館を拡張することを好まないのは、それが絶対に必要でない限りです。

第三者のライブラリなしでReact Router Domのフックを作成するにはどうすればよいですか?

答えて

1

ラッパーは1つのオプションです。名前を付けました。

しかし、ルートの変更を検出してイベントを送信するために、トップ(<Application />)のコンポーネントにフックを入れて、というイベントを送信します。

componentWillReceiveProps(nextProps) { 
    if (this.props.location !== nextProps.location) { 
    sendEvent(); // location has changed, do your work 
    } 
} 

PS。設定に応じて、場所の変更を認識させるためにwithRouterに折り返す必要があります。

+0

トップの 'Application'コンポーネントは、アプリケーションのルート変更を検出しません。ルート変更が発生したときに私は 'componentWillReceiveProps'をトリガーすることができません。 –

+1

場所の変更を認識するためにwithRouter https://reacttraining.com/react-router/web/api/withRouterをラップしてください – lustoykov

関連する問題