forked from remix-run/react-router
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNavigationMixin.js
More file actions
103 lines (80 loc) · 2.03 KB
/
NavigationMixin.js
File metadata and controls
103 lines (80 loc) · 2.03 KB
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import invariant from 'invariant';
import React from 'react';
import { stringifyQuery } from './QueryUtils';
var { func } = React.PropTypes;
var NavigationMixin = {
propTypes: {
stringifyQuery: func
},
getDefaultProps() {
return {
stringifyQuery
};
},
createPath(pathname, query) {
var { stringifyQuery } = this.props;
var queryString;
if (query == null || (queryString = stringifyQuery(query)) === '')
return pathname;
return pathname + (pathname.indexOf('?') === -1 ? '?' : '&') + queryString;
},
/**
* Returns a string that may safely be used to link to the given
* pathname and query.
*/
createHref(pathname, query) {
var path = this.createPath(pathname, query);
var { history } = this.props;
if (history && history.createHref)
return history.createHref(path);
return path;
},
/**
* Pushes a new Location onto the history stack.
*/
transitionTo(pathname, query, state=null) {
var { history } = this.props;
invariant(
history,
'Router#transitionTo needs history'
);
history.pushState(state, this.createPath(pathname, query));
},
/**
* Replaces the current Location on the history stack.
*/
replaceWith(pathname, query, state=null) {
var { history } = this.props;
invariant(
history,
'Router#replaceWith needs history'
);
history.replaceState(state, this.createPath(pathname, query));
},
/**
* Navigates forward/backward n entries in the history stack.
*/
go(n) {
var { history } = this.props;
invariant(
history,
'Router#go needs history'
);
history.go(n);
},
/**
* Navigates back one entry in the history stack. This is identical to
* the user clicking the browser's back button.
*/
goBack() {
this.go(-1);
},
/**
* Navigates forward one entry in the history stack. This is identical to
* the user clicking the browser's forward button.
*/
goForward() {
this.go(1);
}
};
export default NavigationMixin;