forked from vercel/next.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
shallow-routing.js
50 lines (43 loc) · 1.21 KB
/
shallow-routing.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import { Component } from 'react'
import Link from 'next/link'
import Router from 'next/router'
let getInitialPropsRunCount = 1
const linkStyle = {
marginRight: 10,
}
export default class extends Component {
static getInitialProps({ res }) {
if (res) return { getInitialPropsRunCount: 1 }
getInitialPropsRunCount++
return { getInitialPropsRunCount }
}
getCurrentCounter() {
const { url } = this.props
return url.query.counter ? parseInt(url.query.counter) : 0
}
increase() {
const counter = this.getCurrentCounter()
const href = `/nav/shallow-routing?counter=${counter + 1}`
Router.push(href, href, { shallow: true })
}
render() {
return (
<div className="shallow-routing">
<Link href="/nav">
<a id="home-link" style={linkStyle}>
Home
</a>
</Link>
<div id="counter" style={{ marginBottom: 4000 }}>
Counter: {this.getCurrentCounter()}
</div>
<div id="get-initial-props-run-count">
getInitialProps run count: {this.props.getInitialPropsRunCount}
</div>
<button id="increase" onClick={() => this.increase()}>
Increase
</button>
</div>
)
}
}