[react-relay] Remove relay prop from containers.

This commit is contained in:
Eloy Durán
2018-01-30 15:30:36 +01:00
parent c41956752f
commit 2fcce313b6
2 changed files with 24 additions and 3 deletions

View File

@@ -18,6 +18,14 @@ export {
import * as React from "react";
import * as RelayRuntimeTypes from "relay-runtime";
// ~~~~~~~~~~~~~~~~~~~~~
// Utility types
// ~~~~~~~~~~~~~~~~~~~~~
type Diff<T extends string, U extends string> = ({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T];
type Omit<T, K extends keyof T> = { [P in Diff<keyof T, K>]: T[P] };
type RemoveRelayProp<P> = Omit<P & { relay: never }, "relay">;
// ~~~~~~~~~~~~~~~~~~~~~
// Maybe Fix
// ~~~~~~~~~~~~~~~~~~~~~
@@ -82,7 +90,7 @@ export class QueryRenderer extends ReactRelayQueryRenderer {}
export function createFragmentContainer<T>(
Component: React.ComponentType<T>,
fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap
): React.ComponentType<T>;
): React.ComponentType<RemoveRelayProp<T>>;
// ~~~~~~~~~~~~~~~~~~~~~
// createPaginationContainer
@@ -130,7 +138,7 @@ export function createPaginationContainer<T>(
Component: React.ComponentType<T>,
fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap,
connectionConfig: ConnectionConfig<T>
): React.ComponentType<T>;
): React.ComponentType<RemoveRelayProp<T>>;
// ~~~~~~~~~~~~~~~~~~~~~
// createRefetchContainer
@@ -153,4 +161,4 @@ export function createRefetchContainer<T>(
Component: React.ComponentType<T>,
fragmentSpec: RelayRuntimeTypes.GraphQLTaggedNode | GeneratedNodeMap,
taggedNode: RelayRuntimeTypes.GraphQLTaggedNode
): React.ComponentType<T>;
): React.ComponentType<RemoveRelayProp<T>>;

View File

@@ -80,6 +80,10 @@ const MyQueryRenderer = (props: { name: string }) => (
`,
}
);
function doesNotRequireRelayPropToBeProvided() {
<MyFragmentContainer publicProp="is available" />;
}
};
// ~~~~~~~~~~~~~~~~~~~~~
@@ -141,6 +145,11 @@ const MyQueryRenderer = (props: { name: string }) => (
}
`
);
function doesNotRequireRelayPropToBeProvided() {
const feed = { stories: { edges: [] }}; // TODO
<FeedRefetchContainer loadMoreTitle="Load More" feed={feed} />;
}
};
// ~~~~~~~~~~~~~~~~~~~~~
@@ -232,6 +241,10 @@ const MyQueryRenderer = (props: { name: string }) => (
`,
}
);
function doesNotRequireRelayPropToBeProvided() {
const user = { feed: { edges: [] }}; // TODO
<FeedPaginationContainer loadMoreTitle="Load More" user={user} />;
}
};