我已经尝试设置 React、redux、react-redux、react-router 和 react-redux-router,但是每次我从一个路由转换到另一个路由时,整个应用程序都会重新渲染,我该如何解决这个问题? 我的意思是,我需要做的至少是顶级组件留在他所在的位置并且不会丢失 redux 状态树,因为路由器转换会重置 redux 状态。
这些是我正在使用的软件包的版本:
“react”:“^0.14.6”,
“react-dom”:“^0.14.6”,
“react-redux”:“^4.0.6”,
“react-router”:“^2.0.0-rc5 ",
"react-router-redux": "^3.0.0",
"redux": "^3.0.6"
这是我的路线配置:
export default (<Route path="/" component={App}>
<Route path="companies">
<Route path="create" components={CompaniesCreate}></Route>
<Route path="grid" components={CompaniesGrid}></Route>
</Route>
</Route>);
我的默认 index.js 导出:
ReactDOM.render(
<Provider store={store}>
<div>
<Router history={browserHistory} routes={Routes}/>
<DevTools />
</div>
</Provider>
, document.querySelector('.container'));
我的 ConfigureStore.js
const reduxRouterMiddleware = syncHistory(browserHistory);
const finalCreateStore = compose(
applyMiddleware(ReduxPromise, reduxRouterMiddleware),
DevTools.instrument()
)(createStore);
export default function configureStore(initialState) {
const store = finalCreateStore(rootReducer, initialState);
if (module.hot) {
module.hot.accept('../reducers', () =>
store.replaceReducer(require('../reducers'))
);
}
return store;
}
最后,reducers 的索引:
export default combineReducers({
...reducers
routing: routeReducer,
});