पर पास नहीं किया गया है मुझे रिले मॉडर्न में रीफ्रैचकंटनर स्थापित करने में कुछ समस्याएं आ रही हैं। एक मूल घटक QueryRenderer है, जो प्रारंभिक क्वेरी चलाता है, जो बच्चे के घटक के प्रोप को उचित रूप से पॉप्युलेट करता है (एक-प्रोप-दंगे? एह? एह ?!)। RefetchContainer हमारे सभी चर निर्दिष्ट करता है, और एक इनपुट फ़ील्ड के ऑन चेंज इवेंट पर, नए चर के साथ एक क्वेरी को फिर से चलाता है। यह सब पूरी तरह से काम करता है, सिवाय इसके कि बच्चे के प्रोप को प्राप्त नए डेटा के साथ कभी अपडेट नहीं किया जाता है। मैं रिले स्टोर को ड्रिल कर सकता हूं और देख सकता हूं कि वास्तव में उचित डेटा के साथ क्वेरी प्राप्त हुई थी। थोड़ी देर के लिए इसके खिलाफ मेरा सिर बन गया और मैं कुछ मदद की सराहना करता हूं। शायद कुछ आसान मैं याद कर रहा हूँ। और भगवान रिले आधुनिक दस्तावेज जानता है स्पैस है।रिले मॉडर्न रिफैचकंटनर प्रोप को घटक
मैंने चारों ओर पोक किया है और उचित समाधान नहीं मिल रहा है।
import React, { Component } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { graphql, QueryRenderer } from 'react-relay';
import Search from './Search';
const propTypes = {
auth: PropTypes.object.isRequired,
};
class SearchContainer extends Component {
render() {
return (
<QueryRenderer
query={graphql`
query SearchContainerQuery($search: String!){
users: searchUsers(search:$search, first:10){
...Search_users
}
}`}
variables={{ search: 'someDefaultSearch' }}
environment={this.props.auth.environment}
render={({ error, props }) => {
if (error) {
console.log(error);
}
if (props) {
return <Search users={props.users} />;
}
return <div>No Dice</div>;
}}
/>
);
}
}
SearchContainer.propTypes = propTypes;
export default connect(state => ({ auth: state.auth }))(SearchContainer);
createRefetchContainer के साथ बच्चे घटक: relay refetch doesn't show the result
QueryRenderer साथ माता पिता घटक: यह आदमी एक समान समस्या हो रही किया जा रहा है
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { createRefetchContainer, graphql } from 'react-relay';
const propTypes = {
relay: PropTypes.object.isRequired,
users: PropTypes.object,
};
const defaultProps = {
users: {},
};
class Search extends Component {
render() {
return (
<div>
<input
type="text"
onChange={(e) => {
e.preventDefault();
this.props.relay.refetch({
search: e.target.value,
});
}}
/>
<ul>
{this.props.users.nodes.map(user =>
<li key={user.id}>{user.username}</li>,
)}
</ul>
</div>
);
}
}
Search.propTypes = propTypes;
Search.defaultProps = defaultProps;
export default createRefetchContainer(
Search,
{
users: graphql.experimental`
fragment Search_users on SearchUsersConnection
@argumentDefinitions(
search: {type: "String", defaultValue: ""}
) {
nodes {
id
displayName
username
}
}
`,
},
graphql.experimental`
query SearchRefetchQuery($search: String!) {
users: searchUsers(search:$search, first:10){
...Search_users @arguments(search: $search)
}
}
`,
);
GraphQL इस तरह दिखता है:
# A connection to a list of `User` values.
type SearchUsersConnection {
# Information to aid in pagination.
pageInfo: PageInfo!
# The count of *all* `User` you could get from the connection.
totalCount: Int
# A list of edges which contains the `User` and cursor to aid in pagination.
edges: [SearchUsersEdge]
# A list of `User` objects.
nodes: [User]
}
नेटवर्क सी सभी उचित रूप से बनाए जाते हैं, और डेटा अपेक्षित के रूप में वापस कर दिया जाता है। NetworkCalls
ऐसा लगता है @arguments निर्देश को फिर से लाएं क्वेरी यहाँ से बाहर छोड़ा जा सकता है:
query SearchRefetchQuery($search: String!) {
users: searchUsers(search:$search, first:10){
...Search_users @arguments(search: $search)
}
}
(हटाने के लिए यह कोई प्रभाव नहीं लगता है)
मैं @arguments जोड़ने की कोशिश की है यहां अनुशंसा के अनुसार मूल घटक के टुकड़े के लिए निर्देश: Pass variables to fragment container in relay modern, कोई प्रभाव नहीं।
खेद में बहुत मदद नहीं है .. fwiw मैंने पूरी तरह से QuireRenderer को नए प्रोप पास करने के लिए रीफ्रैचकंटर्स को छोड़ दिया है जो काम पूरा हो जाता है। उदाहरण: https://github.com/NCI-GDC/portal-ui/blob/next/src/packages/@ncigdc/modern_components/GenesTable/GenesTable.relay.js – azium
@azium Yep, ऐसा लगता है कि यह ठीक काम करता है। यह सिर्फ मुझे परेशान करता है कि रीफैचकंटनर, विशेष रूप से इसके लिए डिज़ाइन किया गया है, सेट अप करना बहुत मुश्किल है! – cntrlz
मेरे पास एक ही समस्या है और मैं दीवार पर अपने सिर को टक्कर लगी हूं :( –