16

The default react-router is used as such:

import * as React from 'react';
import { Router, Route, hashHistory } from 'react-router';

const routing = (
    <Router history={hashHistory}>
        <Route path="/login" component={Login}/>
    </Router>   
};

When I include the "react-router-relay" library, it adds functionality to the Router. Namely it adds 2 properties to the Router component (render and environment):

import * as React from 'react';
import * as Relay from 'react-relay';
import * as useRelay from 'react-router-relay';
import { Router, Route, hashHistory, applyRouterMiddleware } from 'react-router';

const routing = (
    <Router history={hashHistory} render={applyRouterMiddleware(useRelay)} environment={Relay.Store}>
        <Route path="/login" component={Login}/>
    </Router>   
};

How would I go about augmenting the react-router typings?

I've tried a bunch of approaches, latest being:

import { Router } from 'react-router';

declare module 'react-router' {
    namespace Router {
        export interface RouterProps {
            environment?: any
        }
    }
}

As I need to extend the namespace "Router" and the interface "RouteProps" under it.

Link to React router typings: https://www.npmjs.com/package/@types/react-router

The React-router-relay library does not have any typings itself.

All of the information Ive found about this topic:

2

2 Answers 2

1

Try this one

declare module 'react-router' { 
   interface RouterProps {
      environment?: any
      render?: any
   } 
}

it's working with the latest react-router definitions.

Sign up to request clarification or add additional context in comments.

Comments

0
<Router history={hashHistory} render={applyRouterMiddleware(useRelay)} environment={Relay.Store}>
    <Route path="/login" component={Login}/>
</Router>   

Looks like login (component={Login}) is not Imported.Hence, It always return an error.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.