2015-11-18 10 views
13

द्वारा प्राप्त डेटा की अपेक्षा करता है मेरे पास दो रिले उत्परिवर्तन हैं जो मैं पहले ऑब्जेक्ट जोड़ने के लिए घोंसला कर रहा हूं और उसका नाम सेट कर रहा हूं। मेरा मानना ​​है कि मैं दूसरे उत्परिवर्तन के लिए क्या गुजर रहा हूं वास्तव में रिले द्वारा प्राप्त डेटा है, लेकिन ऐसा लगता है कि यह मुझसे असहमत है। प्रतिक्रिया को ध्यान में रखते कोड इस प्रकार है:रिले उत्परिवर्तन रिले

Relay.Store.update(
     new AddCampaignFeatureLabelMutation({ 
      campaign: this.props.campaign 
     }), 
     { 
      onSuccess: (data) => { 
       Relay.Store.update(
        new FeatureLabelNameMutation({ 
         featureLabel: data.addCampaignFeatureLabel.featureLabelEdge.node, 
         name: this.addLabelInputField.value 
        }) 
       ); 
      }, 
      onFailure:() => {} 
     } 
    ); 

यह काम करता है, लेकिन मुझे एक चेतावनी देता है:

Warning: RelayMutation: Expected prop `featureLabel` supplied to `FeatureLabelNameMutation` to be data fetched by Relay. This is likely an error unless you are purposely passing in mock data that conforms to the shape of this mutation's fragment. 

रिले क्यों लगता है कि डेटा प्राप्त नहीं की है करता है? क्या मुझे किसी भी तरह पेलोड में नए फीचर लेबल को स्पष्ट रूप से वापस करने की ज़रूरत है?

उत्तर

41

मैं एक ही समस्या में पड़ गए और यह मुझे कुछ समय लगा यह पता लगाने की क्या चल रहा था, तो यह दूसरों की मदद कर सकता है: चेतावनी कहते हैं

, आपको रिले द्वारा प्राप्त किए गए उत्परिवर्तन के लिए एक इकाई प्रदान करनी होगी। लेकिन चेतावनी क्या नहीं कहती है कि इसे उत्परिवर्तन के साथ दिमाग में लाया जाना है।

  fragment on Person { 
      firstname, 
      lastname, 
      language, 
      ${UpdatePersonMutation.getFragment('person')} 
      } 

इस स्टोर कर रहे हैं, जिसमें संस्था के लिए आवश्यक टुकड़े जोड़ देगा:

तो बुनियादी तौर पर आप उत्परिवर्तन आप इस तरह प्रारंभिक क्वेरी में भविष्य में इस पर अमल करने के लिए जा रहे हैं जोड़ने के लिए उत्परिवर्तन की आवश्यकता है।

आपके मामले में आपको FeatureLabelNameMutationgetFragment को अपने AddCampaignFeatureLabelMutation क्वेरी में जोड़ना है। यह चेतावनी के बिना सफल होने के लिए FeatureLabelNameMutation के लिए आवश्यक जानकारी के साथ आपकी featureLabel इकाई वापस लाएगा।

रिले दस्तावेज इस और कई अन्य क्षेत्रों पर बहुत खराब है।

+0

यहां एक उत्तर के देर से बिट, लेकिन यही वह है जो मैंने खोज भी समाप्त कर दिया। दस्तावेज पर स्पॉटी से सहमत; मैं इस स्रोत को समझने के लिए बस स्रोत पर जा रहा था। – logos

+0

@ क्रिस्टीन, मेरे पास एक बहुत ही समान समस्या है। मेरा [प्रश्न] (http://stackoverflow.com/q/35197523/2030321) पर एक नज़र डालें? मैं हमेशा के लिए आभारी रहूंगा! – Chris

+0

अरे, मैं हमेशा टुकड़ों को भूल जाता हूं, और अपने सिर को खरोंच रखता हूं ... अब तक यह गलती नहीं हुई है जितनी बार मैंने यह गलती की है। ऐसा नहीं है कि त्रुटि संदेश बहुत मदद करता है .... –

7

रिले आपके उत्परिवर्तन के लिए आपके props से आने के लिए किसी भी टुकड़े की अपेक्षा करता है। चूंकि आप अपने कॉलबैक से data का उपयोग कर रहे हैं और आपके कंटेनर प्रोप से कुछ नहीं रिले ने उस चेतावनी को उठाया है।

स्रोत पर एक नज़र डालें: https://github.com/facebook/relay/blob/master/src/mutation/RelayMutation.js#L289-L307

+0

बिल्कुल सही, धन्यवाद! – logos

+0

तो, यह सिर्फ एक चेतावनी है और डेटा का उपयोग करने में कोई समस्या नहीं होगी? –

+0

@javvvva नहीं, नीचे दिए गए उत्तर को देखें। चेतावनी वास्तव में एक वास्तविक गलत काम पर प्रकाश डाला गया है, लेकिन यह बहुत अच्छी तरह से व्याख्या नहीं करता है। – Christine

संबंधित मुद्दे