main.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3. import * as attachFastClick from 'fastclick';
  4. import { AppContainer } from 'react-hot-loader';
  5. import project from '@project';
  6. import * as services from './services';
  7. import { initStore, refreshStore } from './services/Store';
  8. import App from './containers/App';
  9. import Routes from './routes';
  10. import Stores from './stores';
  11. /**
  12. * 兼容手机端处理300问题
  13. */
  14. attachFastClick.attach(document.body);
  15. /**
  16. * 初始化
  17. */
  18. const initialState = {};
  19. const store = initStore(initialState, Stores, project, services);
  20. const MOUNT_NODE = document.getElementById('root');
  21. const render = (Component, routes) => {
  22. if (__DEV__) {
  23. ReactDOM.render(
  24. <AppContainer>
  25. <Component store={store} routes={routes} project={project} history={services.History} />
  26. </AppContainer>,
  27. MOUNT_NODE,
  28. );
  29. } else {
  30. ReactDOM.render(
  31. <Component store={store} routes={routes} project={project} history={services.History} />,
  32. MOUNT_NODE,
  33. );
  34. }
  35. };
  36. if (__DEV__) {
  37. /**
  38. * 开发环境处理
  39. */
  40. if (module.hot) {
  41. module.hot.accept(['./containers/App', './routes'], () => {
  42. Promise.all([import('./containers/App'), import('./routes')]).then(results => {
  43. const [{ default: component }, { default: routes }] = results;
  44. ReactDOM.unmountComponentAtNode(MOUNT_NODE);
  45. render(component, routes);
  46. });
  47. });
  48. module.hot.accept('./stores', () => {
  49. import('./stores').then(result => {
  50. refreshStore(store, result.default, project, services);
  51. });
  52. });
  53. module.hot.accept(() => {
  54. window.location.href = window.location.href;
  55. });
  56. }
  57. }
  58. try {
  59. render(App, Routes);
  60. } catch (err) {
  61. console.error(err);
  62. }