`history.push`, используемый в наблюдаемом редуксе эпосе, перезагружает все приложение - PullRequest
0 голосов
/ 15 ноября 2018

history.push, используемый в эпической эпопее, в которой можно наблюдать редуксы, а не загружать только новые компоненты.Использование Link (реакции-маршрутизатора-dom) для прямого перехода к «new / path» прекрасно работает и загружает только компоненты, которые отличаются.

Приложение выглядит следующим образом:

В приложенииconfig:

const history = createHashHistory({
  hashType: "slash",
})

<Provider store={store}>
    <Router history={history}>
      <RootContainer />
    </Router>
</Provider>

const configureStore = (): Store => {
  return createStore(
    rootReducer,
    applyMiddleware(createEpicMiddleware(rootEpic, {
        dependencies: { history },
    })),
  )
}

В RootContainer.js

import { withRouter } from "react-router-dom"

const Root = withRouter(connect(mapStateToProps, mapDispatchToProps)(RootComponent))
export default Root

В эпосах:

import { push } from "connected-react-router"

const navigateTo = (action$: ActionsObservable<Action>, store: Store, { history }): ActionsObservable<Action> => (
  action$.pipe(
    ofType(SharedActions.OPEN_WINDOW),
    mergeMap((action) => {
      history.push(action.payload.url)
      return Observable.empty()
    }),
  )
)

<Route> s (из "Reaction-router-dom")рендер <Loadable> (из "реагирующей загрузки")

package.json

"react": "^16.2.0",
"react-loadable": "^5.4.0",
"react-router": "^4.2.0",
"react-router-dom": "^4.2.2",
"redux": "^3.6.0",
"redux-observable": "^0.17.0",
"rxjs": "^5.5.7",
...