mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
9f08e48d72
RE: https://github.com/zeit/next.js/issues/4587, this pull request improves the with-segment example. Previously, only SSR page loads were tracked. This pull request adds manual page view logging via `Router.events.on('routeChangeComplete')` in `Page.js`. There is also a minor bug fix on the textarea to remove a console error.
47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
import React from 'react'
|
|
import Document, { Head, Main, NextScript } from 'next/document'
|
|
import * as snippet from '@segment/snippet'
|
|
|
|
const {
|
|
// This write key is associated with https://segment.com/nextjs-example/sources/nextjs.
|
|
ANALYTICS_WRITE_KEY = 'NPsk1GimHq09s7egCUlv7D0tqtUAU5wa',
|
|
NODE_ENV = 'development'
|
|
} = process.env
|
|
|
|
export default class extends Document {
|
|
static getInitialProps ({ renderPage }) {
|
|
const { html, head, errorHtml, chunks } = renderPage()
|
|
return { html, head, errorHtml, chunks }
|
|
}
|
|
|
|
renderSnippet () {
|
|
const opts = {
|
|
apiKey: ANALYTICS_WRITE_KEY,
|
|
// note: the page option only covers SSR tracking.
|
|
// Page.js is used to track other events using `window.analytics.page()`
|
|
page: true
|
|
}
|
|
|
|
if (NODE_ENV === 'development') {
|
|
return snippet.max(opts)
|
|
}
|
|
|
|
return snippet.min(opts)
|
|
}
|
|
|
|
render () {
|
|
return (
|
|
<html>
|
|
<Head>
|
|
{/* Inject the Segment snippet into the <head> of the document */}
|
|
<script dangerouslySetInnerHTML={{ __html: this.renderSnippet() }} />
|
|
</Head>
|
|
<body>
|
|
<Main />
|
|
<NextScript />
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|
|
}
|