ReactアプリをSPAにし、React Router 4
とreact-router-dom
を追加しています。現在、ホームコンポーネントへのエントリポイントは次のようになっています。
render (
<Provider store={store}>
<App>
<Home />
</App>
</Provider>,
document.getElementById('app')
);
別のモジュールでは、別のエントリポイントがあり、<Home />
コンポーネントの代わりに別のエントリポイントがありますが、残りはほとんど同じように見えました。
2つの質問:
<BrowserRouter>
が<Provider store={store}>
をラップする必要があるか、またはその逆であるかは重要ですか? react-router-dom
はreduxストアを使用していないようですが、それでも<Provider>
は<BrowserRouter>
をラップする必要があると思います-以下のコードを参照してください。新しいコードは次のとおりです。
render (
<Provider store={store}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>,
document.getElementById('app')
);
私はこれを正しく処理していますか?
彼らはお互いに依存していません。
それらの実装、特にそれらのレンダリングメソッドを見てください。
ほとんどの場合、contextTypes
のカップルを宣言し、子をレンダリングします。
何かのようなもの:
import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import { ConnectedRouter } from 'react-router-redux'
import store, { history } from './store'
import App from './app'
render(
<Provider store={store}>
<ConnectedRouter history={history}>
<div>
<App />
</div>
</ConnectedRouter>
</Provider>,
document.querySelector('#root')
)