###実装したいこと
react nativeでページを引っ張ってページを更新する。
refreshControlを使っています。
javascript
1export default class Home extends React.Component { 2 constructor(props) { 3 super(props); 4 this.state = { 5 refreshing: false, 6 items: [] 7 }; 8 } 9 10 fetchData() { 11 const items = []; 12 Fire 13 .shared 14 .itemsCollection 15 .get() 16 .then(function(querySnapshot) { 17 querySnapshot.forEach(function(doc) { 18 items.push(doc.data()); 19 }); 20 this.setState({ items: items }); 21 }); 22 } 23 24 _onRefresh() { 25 this.setState({refreshing: true}); 26 this.fetchData().then(() => { 27 this.setState({refreshing: false}); 28 }); 29 } 30 31 async componentDidMount() { 32 const querySnapshot = await Fire 33 .shared 34 .itemsCollection 35 .get() 36 37 const items = []; 38 querySnapshot.forEach(doc => { 39 items.push(doc.data()); 40 }); 41 42 this.setState({ items: items }); 43 } 44 45 render() { 46 const items = this.state.items; 47 return ( 48 <Container> 49 <Content style={styles.cnt} refreshControl={ 50 <RefreshControl 51 refreshing={this.state.refreshing} 52 onRefresh={this._onRefresh.bind(this)} 53 /> 54 }> 55 <View style={styles.list_asset}> 56 {items.map(item => ( 57 <TouchableOpacity style={styles.article_asset}> 58 <Image source={{ uri: item.url }} 59 style={styles.photo}/> 60 <View style={styles.text}> 61 <Text style={styles.phrase}>{item.phrase}</Text> 62 </View> 63 </TouchableOpacity> 64 ))} 65 </View> 66 </Content> 67 </Container> 68 ); 69 } 70}
###現在出ているエラー
ページを引っ張って更新しようとすると
TypeError:undefined is not an object(evaluating 'this.fetchData().then')
と出ます。
fetchData() {
のところのコードがおかしいと思うのですが、原因がわかっていません。
###補足
itemsのドキュメントにはphraseとurlというフィールドがあります。
urlは紐づくStorageのurlです。
ご教示いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。