github graphql v4 apiからの応答データをコンポーネントに提供するはずのapollo-wrappedコンポーネントがあります。私は私のgqlクエリで使用されるアプリケーションの別の部分から文字列(SEARCH_QUERY)を使用するつもりですが、githubはundefined
を返し続けます。私は公式のアポロ文書http://dev.apollodata.com/react/queries.html#graphql-optionsに従っています。 私は何が間違っているのか分かりません。変数なしどのようにして、react-apollo graphqlクエリで動的変数を正しく使用できますか?
import React, { Component } from 'react';
import { Text, FlatList } from 'react-native';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';
import { SEARCH_QUERY } from './Home' // this is a string like "react"
// The data prop, which is provided by the wrapper below contains,
// a `loading` key while the query is in flight and posts when ready
const ReposList = ({ data: { loading, search }}) => <Text>SearchResults</Text>
// this doesnt work because I cant properly inject 'SEARCH_QUERY' string
const searchRepos = gql`
query searchRepos($type: searchType!, $query: String!) {
search(type: REPOSITORY, query: $query, first: 100) {
edges {
node {
... on Repository {
nameWithOwner
owner {
login
}
}
}
}
}
}
`
// The `graphql` wrapper executes a GraphQL query and makes the results
// available on the `data` prop of the wrapped component (ReposList here)
export default graphql(searchRepos, {
options: { variables: { query: SEARCH_QUERY }, notifyOnNetworkStatusChange: true }
}
)(ReposList);
このクエリではうまく機能し、期待通りの検索結果を返します。まっすぐ進む?これはGitHubのに使用される
const searchRepos = gql`{
search(type: REPOSITORY, query: "react", first: 100) {
edges {
node {
... on Repository {
nameWithOwner
owner {
login
}
}
}
}
}
} `
は未定義返します。しかし、あなたが実際にあなたのクエリ内でそれを使用しないでください - あなたは$type
変数を定義したので、
const searchRepos = gql`
query searchRepos($type: searchType!, $query: String!) {
search(type: REPOSITORY, query: $query, first: 100) {
edges {
node {
... on Repository {
nameWithOwner
owner {
login
}
}
}
}
}
}
`
うん、 'constのsearchRepos = GQL \'クエリsearchRepos($クエリ:!文字列){ 検索(タイプ:リポジトリ、クエリ:最初の$クエリ、:100){ エッジ{ ノード{ ...リポジトリに{ nameWithOwner 所有者{ ログイン }} }} }} ' は – fatahn
を働いていたし、きちんとそのような小道具を受け継がれていました 'エクスポートデフォルトgraphql(searchRepos、{ オプション:({SEARCHQUERY})=>({変数:{クエリ:SEARCHQUERY}})// notifyOnNetworkStatusChangeを支えるから計算クエリ変数:真 })(ReposList)' ...ありがとう@ダニエル・リアーナ – fatahn