Skip to content
This repository has been archived by the owner on Oct 20, 2021. It is now read-only.

refactor(router): use reach router and remove prop-types warnings in site console #26

Merged
merged 2 commits into from
Sep 11, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .babelrc
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"react"
],
"plugins": [
"transform-runtime"
"transform-runtime",
"syntax-dynamic-import"
],
"env": {
"development": {
Expand All @@ -18,4 +19,4 @@
]
}
}
}
}
7 changes: 6 additions & 1 deletion config/webpack.config.site.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@ const config = {
'core.less': `${sourcePath}/styles/core.less`
}
},
externals: {
'react': 'React',
'react-dom': 'ReactDOM',
'prop-types': 'PropTypes'
},
plugins: [
new webpack.LoaderOptionsPlugin({
test: /\.md$/,
Expand Down Expand Up @@ -109,7 +114,7 @@ config.plugins.push(function () {
const stats = statsData.toJson()
let html = fs.readFileSync(`${sitePath}/index.html`, 'utf8')
const distPath = config.output.publicPath + 'site.' + (isProduction ? stats.hash + '.' : '') + 'js'
html = html.replace(/(<script src=").*?(")/, '$1' + distPath + '$2')
html = html.replace(/(<script src=").*?dist.*?(")/, '$1' + distPath + '$2')
fs.writeFileSync(path.join(`${sitePath}/index.html`), html)
})
})
Expand Down
11,016 changes: 5,619 additions & 5,397 deletions package-lock.json

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,14 @@
"react-update": "^0.4.4"
},
"devDependencies": {
"@reach/router": "^1.1.1",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-eslint": "^8.2.2",
"babel-jest": "^10.0.0",
"babel-loader": "^7.1.2",
"babel-plugin-import": "^1.6.2",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.6.1",
"babel-preset-react": "^6.24.1",
Expand Down Expand Up @@ -111,7 +113,7 @@
"react-custom-scrollbars": "^4.2.1",
"react-dom": "^15.6.2",
"react-hot-loader": "^4.0.0-rc.0",
"react-router": "^2.8.1",
"react-imported-component": "^4.6.2",
"rimraf": "^2.6.2",
"standard": "^11.0.0",
"standard-version": "^4.3.0",
Expand Down
3 changes: 3 additions & 0 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
<ellipse transform="matrix(0.7094 0.7048 -0.7048 0.7094 14.8712 -6.3191)" cx="15.1" cy="14.9" rx="1" ry="14.4"/>
</symbol>
</svg>
<script src="https://cdn.bootcss.com/react/15.6.2/react.min.js"></script>
<script src="https://cdn.bootcss.com/react-dom/15.6.2/react-dom.min.js"></script>
<script src="https://cdn.bootcss.com/prop-types/15.6.1/prop-types.min.js"></script>
<script src="/dist/site.js"></script>
</body>
</html>
19 changes: 10 additions & 9 deletions site/pages/Changelog/index.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
import React from 'react'
import Center from 'widgets/Center'
import Markdown from 'widgets/Markdown'
import Header from 'widgets/Header'
import Footer from 'widgets/Footer'
import BackToTop from 'earth-ui/lib/BackToTop'
import ScrollUp from 'widgets/ScrollUp'
import html from '../../../CHANGELOG.md'
import config from '../config'
import './index.less'

export default () => {
return (
<div className="changelog">
<Header />
<Center>
<Markdown html={html} />
</Center>
<Footer />
<BackToTop {...config.backToTop} />
</div>
<ScrollUp>
<div className="changelog">
<Center>
<Markdown html={html} />
</Center>
<Footer />
<BackToTop {...config.backToTop} />
</div>
</ScrollUp>
)
}
17 changes: 6 additions & 11 deletions site/pages/Components/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import React from 'react'
import PropTypes from 'prop-types'
import { navigate } from '@reach/router'
import { Nav, SubNav, NavItemGroup, NavItem } from 'earth-ui/lib/Nav'
import { Layout, LayoutSidebar, LayoutContent } from 'widgets/Layout'
import Header from 'widgets/Header'
import components from './components.json'

class Components extends React.Component {
Expand All @@ -20,7 +20,7 @@ class Components extends React.Component {

switchRoute (route) {
if (route) {
this.context.router.push(`/components/${route}`)
navigate(`/components/${route}`)
}
}

Expand Down Expand Up @@ -60,14 +60,13 @@ class Components extends React.Component {

render () {
const { open } = this.state
const { children, params } = this.props
const { children, '*': component } = this.props
weiyuxuan marked this conversation as resolved.
Show resolved Hide resolved
return (
<div className="components">
<Header />
<Layout open={open} onToggle={open => this.toggle(open)}>
<LayoutSidebar>
<Nav
selectedId={params.component}
selectedId={component}
onItemClick={this.handleItemClick}
width={280}
indent={40}
Expand All @@ -90,7 +89,7 @@ class Components extends React.Component {
</Nav>
</LayoutSidebar>
<LayoutContent>
{this.renderTitle(params.component ? params.component : params)}
{component && this.renderTitle(component)}
{children}
</LayoutContent>
</Layout>
Expand All @@ -101,11 +100,7 @@ class Components extends React.Component {

Components.propTypes = {
children: PropTypes.node,
params: PropTypes.object
}

Components.contextTypes = {
router: React.PropTypes.object.isRequired
'*': PropTypes.string
}

export default Components
19 changes: 10 additions & 9 deletions site/pages/Guide/index.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
import React from 'react'
import Center from 'widgets/Center'
import Markdown from 'widgets/Markdown'
import Header from 'widgets/Header'
import Footer from 'widgets/Footer'
import ScrollUp from 'widgets/ScrollUp'
import BackToTop from 'earth-ui/lib/BackToTop'
import html from '../../../README.zh-CN.md'
import config from '../config'
import './index.less'

export default () => {
return (
<div className="guide">
<Header />
<Center>
<Markdown html={html} />
</Center>
<Footer />
<BackToTop {...config.backToTop} />
</div>
<ScrollUp>
<div className="guide">
<Center>
<Markdown html={html} />
</Center>
<Footer />
<BackToTop {...config.backToTop} />
</div>
</ScrollUp>
)
}
4 changes: 1 addition & 3 deletions site/pages/Home/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import React from 'react'
import { Link } from 'react-router'
import { Link } from '@reach/router'
import Button from 'earth-ui/lib/Button'
import { Row, Col } from 'earth-ui/lib/Layout'
import Center from 'widgets/Center'
import Pre from 'widgets/Pre'
import Header from 'widgets/Header'
import Footer from 'widgets/Footer'
import BackToTop from 'earth-ui/lib/BackToTop'
import Feature from './Feature'
Expand All @@ -29,7 +28,6 @@ class App extends Component {
const Home = () => {
return (
<div className="home">
<Header />
<div className="home__banner">
<Center>
<div className="home__banner-center">
Expand Down
5 changes: 1 addition & 4 deletions site/pages/Home/index.less
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@

.home {
background-color: #fafafa;
.header {
background-color: #212121;
}
}

.home__banner {
Expand All @@ -19,7 +16,7 @@
//background-color: @black;
padding-top: 120px;
padding-bottom: 120px;
background-color: #212121;
background-color: @dark-darker;
background-image: url(./img/background-stars.svg),url(./img/sat-path.svg),url(./img/ic-ring-planet.svg);
background-position: center,left -40px bottom,right 20px top 120px;
background-size: cover,195px 159px,239px 187px;
Expand Down
18 changes: 8 additions & 10 deletions site/pages/NotFound/index.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
import React from 'react'
import PropType from 'prop-types'
import Button from 'earth-ui/lib/Button'
import ScrollUp from 'widgets/ScrollUp'
import './index.less'

const NotFound = (props) => {
return (
<div className="not-found">
<h1>404</h1>
<p>您访问的页面不存在,也可能被移除了</p>
<Button onClick={() => props.history.goBack()}>返回</Button>
</div>
<ScrollUp>
<div className="not-found">
<h1>404</h1>
<p>您访问的页面不存在,也可能被移除了</p>
<Button onClick={() => window.history.back()}>返回</Button>
</div>
</ScrollUp>
)
}

NotFound.propTypes = {
history: PropType.object
}

export default NotFound
4 changes: 2 additions & 2 deletions site/pages/NotFound/index.less
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.not-found {
padding-top: 150px;
text-align: center;
h1 {
margin: 0;
padding-top: 90px;
font-size: 100px;
}
}
}
2 changes: 2 additions & 0 deletions site/pages/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import Header from 'widgets/Header'
import './index.less'

class App extends Component {
Expand All @@ -11,6 +12,7 @@ class App extends Component {
let { children } = this.props
return (
<div className="wrapper">
<Header />
{children}
</div>
)
Expand Down
91 changes: 29 additions & 62 deletions site/router.js
Original file line number Diff line number Diff line change
@@ -1,67 +1,34 @@
import React from 'react'
import { render } from 'react-dom'
import { Router, browserHistory, Route, IndexRoute, IndexRedirect } from 'react-router'
// import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom'
import process from 'nprogress'
import ReactDOM from 'react-dom'
import { Router, Redirect } from '@reach/router'
import Imported, { whenComponentsReady } from 'react-imported-component'
import NProgress from 'nprogress'
import App from './pages/index'

render((
<Router onUpdate={() => {
process.done()
window.scrollTo(0, 0)
}} history={browserHistory}>
<Route
path="/"
onEnter={() => process.start()}
onChange={() => process.start()}
component={App}
>
<IndexRoute getComponent={(nextState, cb) => {
require.ensure([], require => {
cb(null, require('./pages/Home').default)
})
}} />
<Route path="guide" getComponent={(nextState, cb) => {
require.ensure([], require => {
cb(null, require('./pages/Guide').default)
})
}} />
<Route path="Design" getComponent={(nextState, cb) => {
require.ensure([], require => {
cb(null, require('./pages/Design').default)
})
}} >
<IndexRedirect to="/design/layout" />
<Route path=":designElement" getComponent={(nextState, cb) => {
const designElement = nextState.location.pathname.split('/').pop()
require.ensure([], require => {
cb(null, require(`./pages/Design/docs/${designElement}.md`))
})
}} />
</Route>
<Route path="components" getComponent={(nextState, cb) => {
require.ensure([], require => {
cb(null, require('./pages/Components').default)
})
}}>
<IndexRedirect to="/components/Layout" />
<Route path=":component" getComponent={(nextState, cb) => {
const component = nextState.location.pathname.split('/').pop()
require.ensure([], require => {
cb(null, require(`./pages/Components/docs/${component}.doc`).default)
})
}} />
</Route>
<Route path="Changelog" getComponent={(nextState, cb) => {
require.ensure([], require => {
cb(null, require('./pages/Changelog').default)
})
}} />
<Route path="*" getComponent={(nextState, cb) => {
require.ensure([], require => {
cb(null, require('./pages/NotFound').default)
})
}} />
</Route>
const asyncComponent = path => Imported(() => {
NProgress.start()
whenComponentsReady().then(() => NProgress.done())
return import(`./pages/${path}` /* webpackChunkName: 'chunk-[request][index]' */)
})

const Home = asyncComponent('Home')
const Guide = asyncComponent('Guide')
const Changelog = asyncComponent('Changelog')
const NotFound = asyncComponent('NotFound')
const Components = asyncComponent('Components')
const Doc = routeProps => React.createElement(asyncComponent(`Components/docs/${routeProps.component}.doc`))

ReactDOM.render((
<Router>
<App path="/">
<Home path="/" />
<Guide path="/guide" />
<Redirect noThrow from="/components" to="/components/Layout" />
<Components path="/components">
<Doc path=":component" />
</Components>
<Changelog path="/changelog" />
<NotFound default />
</App>
</Router>
), document.getElementById('app'))
Loading