私はReactでApolloを試していましたが、現在問題が発生しています。React-Apolloインコヒーレントデータ
私は、これはここでは、この
{
"data": {
"p": {
"id": 1,
"name": "Samsung Galaxy S7",
"categories": [
{
"name": "Phone"
},
{
"name": "Samsung"
}
]
}
}
}
のようなものを返す期待通りの製品は、多くのカテゴリー
query getProduct{
product(id: 1){
id
name
categories{id,name}
}
}
に属している基本的なデータを持っている私は、コンポーネント
class TileProductComponent extends Component{
constructor(...args){
super(...args)
}
render(){
if(this.props.data.loading)
return <div>Loading...</div>
var product = this.props.data.p
console.log(this.props.data)
return (
<div> {product.name} </div>
)
}
}
var TileProduct = graphql(
gql`
query TestQuery($id: Int!){
product(id: $id){
id
name
categories{id,name}
}
}
`,
{
options : {
variables : {id:1}
}
}
)(TileProductComponent)
しかし、一度に反応していますそれは反応コンポーネントに渡されていることがわかりました(console.log(this.props.d ata))
"product": {
"id": 1,
"name": "Phone",
"categories": [
{
"name": "Phone"
},
{
"name": "Samsung"
}
]
}
商品名は何らかの理由で最初のカテゴリの名前を採用していますか?私もそのIDを推測しています。修正は、スキーマのフィールドの名前を変更することですが、それはとにかく私の意見では本当にそれを行うべきではありません。
これは既知の問題ですか、これを体験している唯一の問題ですか?任意の提案されたソリューション?
あなたは定義された 'dataIdFromObject'を持っていますか?あなたの製品やカテゴリにIDが重複していると思われ、Apolloが同じオブジェクトだと思うようになっているようです。 Apollo Clientの初期化コードを挿入できますか? – stubailo
VAR netfworkInterface = createNetworkInterface( 'のhttp:// localhostを:3030/graphql') \t \t this.client =新しいApolloClient({ \t \t \t netfworkInterface、 \t \t \t dataIdFromObject:R => \t \tをr.id }) – zbenhadi
私は別の "コレクション"のために別の結果を返さなければならないと思います。たとえば、製品のために "product" + r.idを行うことができます。しかし、どのコレクションから来たのか、私は文書そのものしか持っていないので、 – zbenhadi