好的 - 我错过了什么......花了一天半的时间试图解决这个问题并且即将放弃减少......
我有以下根路线......
...
import configureStore from 'NewApp/client/store';
import createBrowserHistory from 'history/lib/createBrowserHistory';
const history = createBrowserHistory();
const store = configureStore(history);
ReactDOM.render(
<Provider store={store}>
<Router
history={history}
children={routes}
{...clientOptions.props} />
</Provider>
, rootElement
);
...
我看到商店对象,但我一直收到错误,说它不在那里......
添加所需的其他代码:
...
import rootReducer from '../reducers';
const middlewares = [
thunkMiddleware,
loggerMiddleware,
];
const finalCreateStore = compose(
applyMiddleware(...middlewares),
window.devToolsExtension ? window.devToolsExtension() : f => f
)(createStore);
export default function configureStore(history, initialState) {
const store = finalCreateStore(rootReducer, initialState);
syncReduxAndRouter(history, store, state => state.router);
return store;
}
...
...
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { clearNotification } from '../actions/notifications';
import { logout } from '../actions/auth';
import App from '../components/App';
function mapStateToProps(state) {
return {
locale: state.app.locale,
loggingIn: state.auth.loggingIn,
messages: state.app.messages,
notification: state.notification,
title: state.app.title,
user: state.auth.user,
};
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({
clearNotification,
logout,
}, dispatch);
}
export default connect(mapStateToProps, mapDispatchToProps)(App);
答案 0 :(得分:1)
好的,这是交易......事实证明,我正在使用代码拆分的演示应用程序,如果你添加了flux / redux,除了已经给出的所有'joy'之外,你实际需要根据{{3}}“拆分”您的减速机。
上面我的问题中的原始错误发生在任何非根路由,因为webpack代码拆分使这些路由器调用异步 - 基本上与商店中的reducer一起使用了。此答案中链接的this repo显示了如何使路由器和存储与“动态”缩减器保持同步。
我是唯一一个开始觉得添加redux的人比起写一个完整的大型复杂应用程序的工作要多得多吗?看到那些redux 10行“计数器”应用程序演示使它看起来如此......简单?无论如何,希望这次揭幕在途中还没有在redux中有详细记载,但未来可以帮助某人!