2016-01-11 58 views
7

reactx-2.0をredux-simple-routerと併用しようとしていますが、クエリの解析に対応できません。これは私がドキュメントから得たものである:react-router useRouterHistoryとredux-simple-routerを組み合わせる方法

const appHistory = useRouterHistory({ 
    parseQueryString: parse, 
    stringifyQueryString: stringify 
}) 

しかし、私はこのようなReduxの-単純ルータに歴史を渡すと...

syncReduxAndRouter(appHistory, store, (state) => state.router) 

...私はhistory.listen is not a functionを取得します。 react-routerからbrowserHistoryを直接使用することは、redux-simple-routerでうまく動作しているようです。歴史の中でlisten()が欠けているのはなぜですか?これを回避するにはどうしたらいいですか?私はこれを投稿するので

+0

を必ずReduxの-単純ルータ2.xのを '使用NPM Reduxの-単純ルータの@ next'と歴史2.0があれば、インストールしてくださいカスタム履歴を使用しています。私は 'basename'オプションを必要とし、両方をインストールすることで動作させました。 – aarosil

答えて

1

反応し、ルータをドキュメントが更新されています。

import { useRouterHistory } from 'react-router' 
import createBrowserHistory from 'history/lib/createBrowserHistory' 

const createAppHistory = useRouterHistory(createBrowserHistory) 

const appHistory = createAppHistory({ 
    parseQueryString: parse, 
    stringifyQuery: stringify 
}) 

<Router history={appHistory}/> 
+1

履歴パッケージが反応ルータの依存関係になっている印象を受けましたが、react-router/lib/hashHistoryのハッシュ履歴は使用できませんでした。私は、エラー: 'Uncaught TypeError:createHistoryは関数ではありません'というリアクションルータ/ lib/useBasenameの30行目でエラーが発生します。履歴パッケージをインストールする必要がありますか? –

+1

ヒストリパッケージが見つからない場合、別のエラーが発生すると思いますが、コードを見ずには本当に助けにならないでしょう。 –

+0

コードはあなたと同じですが、私ができる最も基本的な例から始めました。 'history/lib/createBrowserHistory'を 'react-router/lib/hashHistory'に置き換えると、それは中断されます。私自身のヒストリパッケージをインストールすると、自分のビルドにhistoryパッケージの2つのコピーが残っています。どのように反応ルータが使用する履歴インスタンスにアクセスするのですか? –

関連する問題