react-redux无法找到商店,但它确实看起来像是在那里

时间:2015-12-09 06:08:53

标签: reactjs reactjs-flux redux

好的 - 我错过了什么......花了一天半的时间试图解决这个问题并且即将放弃减少......

我有以下根路线......

...

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);

enter image description here

1 个答案:

答案 0 :(得分:1)

好的,这是交易......事实证明,我正在使用代码拆分的演示应用程序,如果你添加了flux / redux,除了已经给出的所有'joy'之外,你实际需要根据{{​​3}}“拆分”您的减速机。

上面我的问题中的原始错误发生在任何非根路由,因为webpack代码拆分使这些路由器调用异步 - 基本上与商店中的reducer一起使用了。此答案中链接的this repo显示了如何使路由器和存储与“动态”缩减器保持同步。

我是唯一一个开始觉得添加redux的人比起写一个完整的大型复杂应用程序的工作要多得多吗?看到那些redux 10行“计数器”应用程序演示使它看起来如此......简单?无论如何,希望这次揭幕在途中还没有在redux中有详细记载,但未来可以帮助某人!