Ich bin gerade mit Apollo GraphQL auf einer einfachen React Native App und bin wirklich beeindruckt von dem, was es tun kann. Aber ich verstehe nicht, wie es in den Redux-Store integriert ist. Im Wesentlichen muss ich einige Benutzereingaben von meinem searchReducer
in meine GraphQL-Abfrage übergeben. Ich dachte, ich könnte einfach die verbundene Komponente an meine GraphQL-Abfrage übergeben und eine Variable liefern, aber es findet nicht die prop
searchInput
. Hier ist der Code:Wie man Reops von Redux Store in Apollo GraphQL übergibt Frage
import React, { Component } from 'react';
import { FlatList, Text, StyleSheet } from 'react-native';
import { connect } from 'react-redux';
import Repository from './Repository';
import { graphql } from 'react-apollo';
import gql from 'graphql-tag';
const query = gql`
query repositoryOwner($login: String!) {
repositoryOwner(login: $login) {
url,
avatarUrl(size: 100),
repositories(first: 5) {
nodes {
name,
description
}
}
}
}`;
class RepositoryList extends Component {
renderItem = ({ item }) => {
return <Repository name={item.name} description={item.description} />;
}
render() {
const { repositoryOwner } = this.props.data;
const data = repositoryOwner ? repositoryOwner.repositories.nodes : [];
return (
<FlatList data={data}
renderItem={(repo) => this.renderItem(repo)} keyExtractor={(item, index) => index} />
);
}
}
const mapStateToProps = (state) => {
return {
search: state.searchReducer
};
};
const withStore = connect(mapStateToProps)(RepositoryList);
export default graphql(query, {
options: ({ search: { searchInput }}) => ({ variables: { login: searchInput }})
})(withStore);
Ich dachte, dass, indem man den connect
ed Komponente reagieren, würde es die search
prop
angegeben von mapStateToProps
finden. Allerdings gibt es:
TypeError: undefined is not an object (evaluating _ref3.search.searchInput).
So offensichtlich ist es nicht zu finden prop
. Meine Frage ist, was ist die idiomatische Art, props
aus dem Redux-Speicher als Variablen in einer mit Apollo GraphQL verbundenen Komponente zu verwenden?
Verwenden graphql zuerst auf der Komponente und dann verbinden. Auf diese Weise werden Verbindungsrequisiten in den Query-Wrapper eingefügt. – Herku
Das schien zu funktionieren! Danke für die Hilfe. Meine einzige Sorge ist, dass ich versuchte, Apollos Compose API zu verwenden: https://www.apollographql.com/docs/react/basics/setup.html#compose und es schien nicht die "Requisiten" zu nehmen. Habe sich darüber beschwert, dass ich nicht in der Lage war, eine Klasse als eine Funktion zu bezeichnen. Irgendwelche Gedanken über die richtige Verwendung von 'komponieren'? –