Ich versuche, (mit Flowtype) die Komponenten einzugeben, die ich mit Relay.createContainer
erweitere.So geben Sie einen exportierten RelayContainer ein
Ich schaute in die types exported durch die "React-Relais" -Paket, aber ReactContainer scheint Requisiten nicht zu tragen.
Ich experimentierte mit RelayContainer
, ReactClass
, React$Component
etc, am Ende die nächste Sache, so erwartete ich bekommen konnte ist:
// Foo.js
// @flow
import React from "react";
import Relay from "react-relay";
type Props = { title: string; }
const Foo({ title }: Props) => (<div>{title}</div>);
const exported: Class<React$Component<void, Props, void>> = Relay.createContainer(Foo, {
fragments: { ... }
});
export default exported;
-
// Bar.js
// @flow
import React from "react";
import Foo from "./Foo.js";
const Bar =() => <Foo />;
Jetzt fließen klagen in Foo.js
um Requisiten, die Bar bietet nicht die Titelrequisite, was ein bisschen was ich will (ich würde es gerne beschweren in Bar.js
, aber es ist ein Detail). Allerdings, wenn Bar war auch ein RelayContainer
Foo fragmentFluss verweisen würden sich beschweren, dass es nicht getFragment
in Foo Eigenschaften finden:
// Bar.js
// @flow
import React from "react";
import Relay from "react-relay";
import Foo from "./Foo.js";
const Bar =() => <Foo />;
export default Relay.createContainer(Bar, {
fragments: {
baz:() => Relay.QL`
fragment on Baz {
${Foo.getFragment("foo")}
}
`
}
}
Am Ende ich versuche, die Ausgabe von Relay.createContainer
so zu geben, dass es überträgt sich die Typisierung der dekorierten Komponente. Ich schaute in die internen Typen des Relais und sah https://github.com/facebook/relay/blob/8567b2732d94d75f0eacdce4cc43c3606960a1d9/src/query/RelayFragmentReference.js#L211
, aber ich fühle mich, als ob es nicht der Weg ist, die Eigenschaften von Relay hinzuzufügen.
Irgendeine Idee, wie ich das erreichen könnte?
Zusammenhang https://github.com/ facebook/relay/pull/1155 – gre
Der obige Entwurf scheint vielversprechend. Ich werde sehen, ob ich es erweitern kann, um Flow mitzuteilen, dass die Komponente höherer Ordnung eine statische Methode getFragment hinzufügt. Wenn jemand eine bessere Alternative gefunden hat, wäre es schön zu lernen! – John
Lee Byron hat gestern bei react-europe angekündigt, dass Relay 1.0.0 __generierte __/* Dateien für jedes Fragment generiert und dass sie Fließtypen exportieren werden. also denke ich, das wird das lösen? – gre