mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
9165d753d0
This patch adds an example of a Next.js app using analytics. A custom document injects the [Segment](https://segment.com) bootstrapping snippet into the `<head>`, allowing "page" and "track" calls to be made. An issue came up in CNA asking how we handle this in our apps (see https://github.com/segmentio/create-next-app/issues/24), so I figure an "official example" could help. NOTE: I am affiliated with Segment.
52 lines
1.1 KiB
JavaScript
52 lines
1.1 KiB
JavaScript
import React, { Component } from 'react'
|
|
import Header from '../components/Header'
|
|
|
|
export default class extends Component {
|
|
state = { message: '' }
|
|
|
|
render () {
|
|
return (
|
|
<div>
|
|
<Header />
|
|
<h1>This is the Contact page</h1>
|
|
<form onSubmit={this.handleSubmit}>
|
|
<label>
|
|
<span>Message:</span>
|
|
<textarea onInput={this.handleInput} value={this.state.message} />
|
|
</label>
|
|
<button type='submit'>submit</button>
|
|
</form>
|
|
|
|
<style jsx>{`
|
|
label span {
|
|
display: block;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
textarea {
|
|
min-width: 300px;
|
|
min-height: 120px;
|
|
}
|
|
|
|
button {
|
|
margin-top: 12px;
|
|
display: block;
|
|
}
|
|
`}</style>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
handleInput = e => {
|
|
this.setState({ message: e.target.value })
|
|
}
|
|
|
|
handleSubmit = e => {
|
|
e.preventDefault()
|
|
global.analytics.track('Form Submitted', {
|
|
message: this.state.message
|
|
})
|
|
this.setState({ message: '' })
|
|
}
|
|
}
|