1

react-router-relay の Typescript 定義を作成したいのですが、react-router-relay の拡張性により苦労しています。react-router は、render プロパティを含むいくつかのプロパティを持つ Router コンポーネントを公開しています。react-router-relay は、この render プロパティを使用して Router にミドルウェアを提供します。この Router の後、Relay を指定できる環境プロパティも受け入れます。

モジュール react-router-relay でモジュール react-router の定義を拡張することを typescript に伝えるにはどうすればよいですか?

以下を試しましたが、react-router のすべてのコンポーネントをコピーする必要があります。

declare module "react-router-relay" {
    import {Middleware} from "react-router/lib/applyRouterMiddleware";
    import Router from "react-router/lib/Router";
    import self from "react-router/lib/Route";

    const RelayMiddleware:Middleware;
    export default RelayMiddleware;

    export interface RelayRouter extends React.ComponentClass<RelayRouterProps> { }

    interface RelayRouterProps extends Router.RouterProps {
        render?(...middlewares: any[]): any
        environment?: any
    }

    namespace Route {
        import RouteProps = self.RouteProps;
        export interface RelayRouterProps extends RouteProps {
            name?: string;
            queries?: any;
            render(props: any): React.Component<any, any>
        }
    }
}

反応ルーターの RouterProps と RouteProps のみを直接拡張することも可能ですか?

編集: router-relay は次のように適用されます:

import useRelay from 'react-router-relay';
...
<Router
    history={browserHistory}
    routes={routes}
    render={applyRouterMiddleware(useRelay)}
    environment={Relay.Store}
/>
4

0 に答える 0