@relay(pattern: true)
はrelay.js
0.5
についてはchange logに導入されました。@relayの目的(パターン:true)
しかし、正確に何が実行されているのか、いつ書き込むときに使用するのかは、説明からもテストでも分かりません。fatQueries
。
いくつかの例が非常に役に立ちます。
@relay(pattern: true)
はrelay.js
0.5
についてはchange logに導入されました。@relayの目的(パターン:true)
しかし、正確に何が実行されているのか、いつ書き込むときに使用するのかは、説明からもテストでも分かりません。fatQueries
。
いくつかの例が非常に役に立ちます。
次のようなGraphQLクエリを考えてみましょう:
viewer {
friends(first: 10) {
totalCount
edges { node { name } }
pageInfo { hasNextPage }
}
}
そのサブフィールドのいずれかを指定せず、フィールドの名前が含まれるように、リレー変異のためfat queryを定義することというリレーのいずれかのサブフィールドを伝えたときそのフィールドはその突然変異の結果として変化する可能性がある。
残念ながら、このようなfind
、first
などの接続の引数を省略すると、friends
フィールド上last
が接続引数依存フィールドedges
とpageInfo
の検証エラーが発生します。
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload {
viewer {
friends { edges, pageInfo } # Will throw the validation error below
}
}
`;
}
// Uncaught Error: GraphQL validation/transform error ``You supplied the `pageInfo`
// field on a connection named `friends`, but you did not supply an argument necessary
// to do so. Use either the `find`, `first`, or `last` argument.`` in file
// `/path/to/MyMutation.js`.
あなたが使用することができます@relay(pattern: true)
ディレクティブを使用して、fatクエリをパターン一致に使用して、完全に統合されたクエリとして使用するのではなく、追跡されたクエリに対して使用したいことを示します。変異の詳細については
getFatQuery() {
return Relay.QL`
fragment on AddFriendMutationPayload @relay(pattern: true) {
viewer {
friends { edges, pageInfo } # Valid!
}
}
`;
}
参照:https://facebook.github.io/relay/docs/guides-mutations.html#content
うーん...私は、これは自動的に起こったと思いました。上記のdocリンクから引用すると、 'この太ったクエリは、他のGraphQLクエリのように見えますが、重要な違いの1つです。私たちは、これらのフィールドのいくつかがスカラーではないことを知っていますが(FriendEdgeや友人のように)、サブクエリを使って子どもの名前を付けていないことに気づきます。このようにして、私たちはRelayに、このような非スカラーフィールドの下のものがこの突然変異の結果として変化する可能性があることを示す。 –
Hunh。私はそれらの文書も書いています。私はこの1つに電話して友達にしなければならないだろう。 @ JoeSavona、何のためのパターンディレクティブですか? – steveluscher
友人に電話しました。私の答えを編集する! – steveluscher