enable React strict mode

This commit is contained in:
Pig Fang 2020-10-25 10:55:58 +08:00
parent 9bfc0e6076
commit d3ebd0432e
No known key found for this signature in database
GPG Key ID: A8198F548DADA9E2

View File

@ -1,46 +1,41 @@
import * as React from 'react' import * as React from 'react'
import ReactDOM from 'react-dom' import * as ReactDOM from 'react-dom'
import './scripts/app' import './scripts/app'
import routes from './scripts/route' import routes from './scripts/route'
loadModules()
if (process.env.NODE_ENV === 'development') { if (process.env.NODE_ENV === 'development') {
window.React = React window.React = React
window.ReactDOM = ReactDOM window.ReactDOM = ReactDOM
} }
async function loadModules() { if (blessing.route.startsWith('admin')) {
if (blessing.route.startsWith('admin')) { const entry = document.querySelector<HTMLAnchorElement>('#launch-cli')
const entry = document.querySelector<HTMLAnchorElement>('#launch-cli') entry?.addEventListener('click', async () => {
entry?.addEventListener('click', async () => { const { launch } = await import('./scripts/cli')
const { launch } = await import('./scripts/cli') launch()
launch() })
}) }
}
const route = routes.find( const route = routes.find((route) =>
// eslint-disable-next-line no-shadow new RegExp(`^${route.path}$`, 'i').test(blessing.route),
(route) => new RegExp(`^${route.path}$`, 'i').test(blessing.route), )
) if (route) {
if (route) { if (route.module) {
if (route.module) { Promise.all(route.module.map((m) => m()))
Promise.all(route.module.map((m) => m())) }
} if (route.react) {
if (route.react) { const Component = React.lazy(
const Component = React.lazy( route.react as () => Promise<{ default: React.ComponentType }>,
route.react as () => Promise<{ default: React.ComponentType }>, )
) const Root = () => (
const Root = () => ( <React.StrictMode>
<React.Suspense fallback={route.frame?.() ?? ''}> <React.Suspense fallback={route.frame?.() ?? ''}>
<Component /> <Component />
</React.Suspense> </React.Suspense>
) </React.StrictMode>
const c = )
typeof route.el === 'string' const c =
? document.querySelector(route.el) typeof route.el === 'string' ? document.querySelector(route.el) : route.el
: route.el ReactDOM.render(<Root />, c)
ReactDOM.render(<Root />, c)
}
} }
} }