design.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import React, {Component} from 'react';
  2. import ReactDOM from 'react-dom';
  3. import './index.css';
  4. import DevelopVersion from './devApp/developVersion/DevelopVersion';
  5. import DevApp from './devApp/devApp';
  6. import * as serviceWorker from './serviceWorker';
  7. import {BrowserRouter as Router, Route, Link, Switch, Redirect} from "react-router-dom";
  8. import ApolloClient from "apollo-boost";
  9. import {ApolloProvider} from "react-apollo";
  10. import {IntlProvider, addLocaleData} from 'react-intl';
  11. //如果浏览器没有自带intl,则需要在使用npm安装intl之后添加如下代码
  12. // import intl from 'intl';
  13. import zh from 'react-intl/locale-data/zh';
  14. import en from 'react-intl/locale-data/en';
  15. import zh_CN from './language/zh_CN.js';
  16. import en_US from './language/en_US.js';
  17. import {graphqlUrl} from "./config";
  18. //import BasicVersion from "./app/basicVersion/BasicVersion";
  19. import Login from "./login/Login";
  20. addLocaleData([...en, ...zh]);
  21. const client = new ApolloClient({
  22. uri: graphqlUrl
  23. });
  24. let browserLanguage = (navigator.language || navigator.browserLanguage).toLowerCase().split('-')[0];
  25. let language = browserLanguage === 'zh' ? "中文" : "English";
  26. class MainApp extends Component {
  27. constructor() {
  28. super();
  29. sessionStorage.setItem("language", language);
  30. this.state = {
  31. language: sessionStorage.getItem("language")
  32. };
  33. }
  34. changeLanguage = (language) => {
  35. // console.log("index changeLanguage",language);
  36. this.setState({
  37. language: language
  38. });
  39. };
  40. chooseLocale = (language) => {
  41. let locale, messages;
  42. switch (language) {
  43. case "English":
  44. locale = 'en';
  45. messages = en_US;
  46. return {locale, messages};
  47. case "中文":
  48. locale = 'zh';
  49. messages = zh_CN;
  50. return {locale, messages};
  51. default:
  52. locale = 'zh';
  53. messages = zh_CN;
  54. return {locale, messages};
  55. }
  56. };
  57. render() {
  58. let {language} = this.state;
  59. let {locale, messages} = this.chooseLocale(language);
  60. let ownProps = {
  61. language,
  62. changeLanguage: this.changeLanguage
  63. };
  64. const PrivateRoute = ({component: Component, ownProps, ...rest}) => (
  65. <Route {...rest} render={(props) => {
  66. return <Component {...ownProps} {...props}/>
  67. }}/>
  68. );
  69. return (
  70. <ApolloProvider client={client}>
  71. <IntlProvider locale={locale} messages={messages}>
  72. <Router>
  73. <Switch>
  74. <Route exact path="/" component={DevApp}/>
  75. <PrivateRoute path="/developer" ownProps={ownProps} component={DevelopVersion}/>
  76. <Route path="/login" component={Login}/>
  77. </Switch>
  78. </Router>
  79. </IntlProvider>
  80. </ApolloProvider>
  81. )
  82. }
  83. }
  84. ReactDOM.render(<MainApp/>, document.getElementById('root'));
  85. serviceWorker.unregister();