2017-03-04 39 views
0

我想取一些示例數據並顯示一些文字在我的反應本機應用程序。這是怎樣的代碼看起來(幾乎從教程直取):對象是不是一個做出反應的孩子(發現:對象,具有鍵{...})有效

function getExampleData() { 
    return fetch('https://facebook.github.io/react-native/movies.json') 
    .then((response) => response.json()) 
    .then((responseJson) => { 
     return responseJson.movies[0].title; 
    }) 
    .catch((error) => { 
     console.log(error); 
     return 'Error!'; 
    }); 
} 

class CenterView extends React.Component { 
    render() { 
    return (
     <Text>{getExampleData()}</Text> 
    ); 
    } 
} 

從URL響應正文:

{ 
    "title": "The Basics - Networking", 
    "description": "Your app fetched this from a remote endpoint!", 
    "movies": [ 
    { "title": "Star Wars", "releaseYear": "1977"}, 
    { "title": "Back to the Future", "releaseYear": "1985"}, 
    { "title": "The Matrix", "releaseYear": "1999"}, 
    { "title": "Inception", "releaseYear": "2010"}, 
    { "title": "Interstellar", "releaseYear": "2014"} 
    ] 
} 

我收到錯誤消息

enter image description here

如果我把toString()函數調用,[目標對象]後打印出來,所以我想這是開啓對象爲文本之前的事返回。誰能告訴我這是怎麼完成的?

+0

JSON.stringify(...) –

+0

因爲你正在返回一個promise(一個對象!)而不是字符串文字。 –

回答

2

答:您正在按照您的預期將返回的承諾對象返回給fetch方法getExampleData而不是Star Wars

B.如果你想渲染的標題(S)。您最好在componentWillMount方法中啓動呼叫,然後在到達成功回調後設置使用this.setState方法的狀態,該方法將運行render方法。

getExampleData() { 
    return fetch('https://facebook.github.io/react-native/movies.json') 
    .then((response) => response.json()) 
    .then((responseJson) => { 
    return responseJson.movies[0].title; 
    }) 
    .catch((error) => { 
    console.log(error); 
    return 'Error!'; 
    }); 
} 
componentWillMount() { 
    getExampleData().then(function (title) { 
    this.setState({ 
     title 
    }) 
    }) 
} 

render() { 
    return (
    <Text>{this.state.title}</Text> 
); 
} 
相關問題