2015-10-21 77 views
1

以下代碼導致「未終止的字符串常量」錯誤,我不知道爲什麼。此代碼來自Facebook React團隊的this blog post爲什麼Relay.QL導致未終止的字符串常量錯誤?

import React from 'react'; 
import Relay from 'react-relay'; 

// Story.react.js 
class Story extends React.Component { 
    render() { 
    var story = this.props.story; 
    return (
     <Story> 
     <Image uri={story.author.profile_picture.uri} /> 
     <Text>{story.author.name}</Text> 
     <Text>{story.text}</Text> 
     </Story> 
    ); 
    } 
} 

module.exports = Relay.createContainer(Story, { 
    queries: { 
    story: Relay.QL` 
     Story { 
     author { 
      name, 
      profile_picture { 
      uri 
      } 
     }, 
     text 
     } 
    ` 
    } 
}); 

如果我更換

Relay.QL` 
    ... 
` 

{},錯誤消失(不過,當然,也是如此的數據)。

有人知道這裏發生了什麼嗎?

回答

3

當我們最初編寫這些示例時,我們簡化了語法以避免分散注意無關細節的人,尤其是因爲我們知道某些語法在開源版本發佈之前會發生變化。

要解決這個問題:

  • 返回Relay.QL模板從函數文本。
  • queries房產現在是fragments
  • 片段聲明語法已更改,因此Story現在是fragment on Story
  • 田地是駱駝,因此profile_picture將成爲profilePicture
  • (可選)刪除逗號,因爲它們被GraphQL視爲空白。
  • 另外,請確保您正在通過babel-relay-plugin處理源代碼,它是負責獲取該模板文字並將其轉化爲代表性片段的代表,該代碼片段使用Relay在運行時需要的數據註釋;一個示例顯示了一種方法可以在the relay-starter-kit中找到。
module.exports = Relay.createContainer(Story, { 
    queries: { 
    story:() => Relay.QL` 
     fragment on Story { 
     author { 
      name 
      profilePicture { 
      uri 
      } 
     } 
     text 
     } 
    `, 
    }, 
});

我認爲我們應該在go back and update the syntax博客文章,以避免可能發生的混亂,但在此期間,我認爲你最好還是考慮一下the documentation

+0

直接從源代碼...這是真棒,謝謝。實際上,我試圖將博客文章中的示例與relay-starter-kit合併,就像練習一樣,並且完全被矛盾的語法混淆。 – Horace

相關問題