File tree 3 files changed +17
-1
lines changed
packages/@sanity/state-router
3 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ export default class Product extends React.Component {
10
10
static propTypes = {
11
11
id : PropTypes . string
12
12
}
13
+
13
14
render ( ) {
14
15
const { id} = this . props
15
16
const nextProductId = Math . random ( ) . toString ( 32 ) . substring ( 2 )
@@ -24,6 +25,15 @@ export default class Product extends React.Component {
24
25
< IntentLink intent = "open" params = { { type : 'product' , id : 'foo' } } >
25
26
Open Foo
26
27
</ IntentLink >
28
+ < p >
29
+ < WithRouter >
30
+ { router => (
31
+ < button onClick = { ( ) => router . navigateIntent ( 'open' , { type : 'product' , id : 'foobar' } ) } >
32
+ Click to programmatically navigate to intent < b > open:</ b > product foobar
33
+ </ button >
34
+ ) }
35
+ </ WithRouter >
36
+ </ p >
27
37
< WithRouter > { router => < pre > { JSON . stringify ( router . state ) } </ pre > } </ WithRouter >
28
38
< p >
29
39
< StateLink toIndex > Up…</ StateLink >
Original file line number Diff line number Diff line change @@ -30,6 +30,7 @@ export default class RouterProvider extends React.Component {
30
30
resolveIntentLink : this . resolveIntentLink ,
31
31
navigateUrl : this . navigateUrl ,
32
32
navigate : this . navigateState ,
33
+ navigateIntent : this . navigateIntent ,
33
34
getState : this . getState ,
34
35
channel : pubsub ( )
35
36
}
@@ -44,6 +45,10 @@ export default class RouterProvider extends React.Component {
44
45
this . navigateUrl ( this . resolvePathFromState ( nextState ) , options )
45
46
}
46
47
48
+ navigateIntent = ( intentName : string , params : Object , options : NavigateOptions = { } ) : void => {
49
+ this . navigateUrl ( this . resolveIntentLink ( intentName , params ) , options )
50
+ }
51
+
47
52
getState = ( ) => this . _state
48
53
49
54
resolvePathFromState = ( state : Object ) : string => {
Original file line number Diff line number Diff line change @@ -40,7 +40,8 @@ export default function withRouter(ComposedComponent: ReactClass<{}>) : ReactCla
40
40
render ( ) {
41
41
const router = {
42
42
state : this . state . routerState ,
43
- navigate : this . context . __internalRouter . navigate
43
+ navigate : this . context . __internalRouter . navigate ,
44
+ navigateIntent : this . context . __internalRouter . navigateIntent
44
45
}
45
46
return < ComposedComponent { ...this . props } router = { router } />
46
47
}
You can’t perform that action at this time.
0 commit comments