提交 02e75cfd 编写于 作者: H Henrik Wenz 提交者: Tim Neutkens

Simplify with-noscript example (#9094)

## Changelog

- Removed react-lazyload
- Removed images
- Removed ReactDOMServer from Client
- Removed next.config.js

## Notes

**CommonJS vs ESM:** In the future we might be able to use top level `await` in order to import only on the server (e.g.: `await import(“react-dom/server”)`)

Until then we need to mix CommonJS and ESM in favor of messing with the webpack config.
上级 beed775e
import React from 'react'
import ReactDOMServer from 'react-dom/server'
export default function Noscript (props) {
const staticMarkup = ReactDOMServer.renderToStaticMarkup(props.children)
// We don't want to send 'react-dom/server' to the client
let ReactDOMServer
if (typeof window === 'undefined') {
ReactDOMServer = require('react-dom/server')
}
export default function Noscript ({ children }) {
if (!ReactDOMServer) {
return null
}
const staticMarkup = ReactDOMServer.renderToStaticMarkup(children)
return <noscript dangerouslySetInnerHTML={{ __html: staticMarkup }} />
}
module.exports = {
webpack: (config, { dev }) => {
if (!dev) {
config.resolve.alias = {
'react-dom/server': require.resolve(
'react-dom/umd/react-dom-server.browser.production.min.js'
)
}
}
return config
}
}
......@@ -9,8 +9,7 @@
"dependencies": {
"next": "latest",
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-lazyload": "^2.2.7"
"react-dom": "^16.7.0"
},
"license": "ISC"
}
import React from 'react'
import LazyLoad from 'react-lazyload'
import Noscript from '../components/Noscript'
const images = [
'/static/img/reactjs.png',
'/static/img/nextjs.png',
'/static/img/vuejs.png',
'/static/img/angular.jpg'
]
class Index extends React.Component {
static getInitialProps (context) {
const { isServer } = context
return { isServer }
}
render () {
export default function IndexPage () {
return (
<div style={{ textAlign: 'center' }}>
{images.map((item, index) => (
<div key={index}>
<LazyLoad height={700} offset={100}>
<img width={700} height={700} src={item} alt={`image_${index}`} />
</LazyLoad>
<Noscript>
<img width={700} height={700} src={item} alt={`image_${index}`} />
</Noscript>
</div>
))}
</div>
<>
<h1>noscript</h1>
<p>Disable JavaScript to see it in action:</p>
<hr />
<Noscript>Noscript is enabled!</Noscript>
</>
)
}
}
export default Index
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册