11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ReactNativeで引っ張ってデータ更新

Last updated at Posted at 2018-10-29

APIの準備

とりあえず/api/whattimeというリクエストで現在の時間を返すAPIを実装します。言語は何でも。

{"status":"OK","date":"2018-10-29 23:37:59"}

Laravelでのサンプル

私はLaravelで下記のように実装してみました。

web.api
Route::get('/whattime',function(){
    $res['status'] = 'OK';
    $res['date'] = date('Y-m-d H:i:s');
    return \Response::json($res);
});

ReactNativeでの実装

Mountされたときの日時になっていますが、引っ張ると更新されます。
ポイントはonRefresh()が実装されたコンポーネントを利用すること。FlatListとかでもいいのですが、今回はListではなく普通のテキストを更新したかったのでScrollViewを利用してみました。

App.js
import React from 'react';
import { StyleSheet, Text, View, ScrollView, RefreshControl } from 'react-native';

export default class App extends React.Component {

  state = {
    refreshing: false,
    status: 'N/A',
    datetime: '0000-00-00'
  }

  componentDidMount(){
    this._fetch();
  }

  _fetch = () => {
    fetch('http://localhost:8000/api/whattime')
      .then((response) => {
        this.setState({
          refreshing: true
        });
        return response.json();
      })
      .then((responseJson) => {
        this.setState({
          refreshing: false,
          status: responseJson['status'],
          datetime: responseJson['date']
        });
      })
      .catch((error) => console.log(error));
  }

  render() {
    return (
      <View style={styles.container}>
        <ScrollView
          refreshControl={
            <RefreshControl
              refreshing={this.state.refreshing}
              onRefresh={() => this._fetch()}
            />
          }
        >
          <Text>Status:{this.state.status}</Text>
          <Text>DateTime:{this.state.datetime}</Text>
        </ScrollView>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    paddingVertical:60,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

確認

こんな感じ。(○がでてるのが関係ないです)。

スクリーンショット 2018-10-30 8.45.13.png

メモ

最後まで来たら追加ロードとかも簡単にできます。便利。

11
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?