React.js ライブラリ「use-elapsed-time」を使ってカウントダウン機能を実装する

React.js ライブラリ「use-elapsed-time」を使ってカウントダウン機能を実装する

ライブラリ「use-elapsed-time」をインストールすると、カウントダウン機能の実装が可能です。ここでは、react.jsでuse-elapsed-timeを利用するための手順と簡単な使い方を記述してます。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • node V12.13.1
  • npm 6.14.2
  • React 16.13.0

react.js環境構築

下記のコマンドで構築してます。ここでは、react-appという名前でプロジェクトを作成してます。

create-react-app react-app

use-elapsed-timeインストール

作成したプロジェクトに移動して、インストールします。

## 作成したプロジェクトに移動
cd react-app
 
## インストール
npm install use-elapsed-time

use-elapsed-time 使い方

srcディレクトリにsample.jsと名前で下記のコードを記述します。

import React, { useState, useEffect }  from 'react';
import { useElapsedTime } from 'use-elapsed-time'

const isPlaying = true
const duration = 10; 
const options = { duration };  

const CountDownTimerComponent = () => {
  const { elapsedTime } = useElapsedTime(isPlaying, options);
  const remainingTime = Math.ceil(duration - elapsedTime);

  return <div style={{ fontSize: 32 }}>Remaining {remainingTime} seconds</div>;
};

const Sample = () => {

  const [key, setKey] = useState("0");

  useEffect(() => {
    document.addEventListener("keyup", () => {
      setKey(new Date().getTime());
    });
  }, []);

  return (    
    <div>
      <h1>Countdown timer</h1>
      <p>何かキーを押せばリセットされます</p>
      <CountDownTimerComponent key={key} />
    </div>
  );
}

export default Sample;

次に、srcディレクトリ配下にあるApp.jsを下記のように編集します。

import React from 'react';
import Sample from './sample';
import './App.css';

function App() {
  const style = {
    width: "50%",
    margin: "0 auto",
    marginTop: 150,
  };
  return (
    <div className="App">
      <div style={style}>
        <Sample />
      </div>
    </div>
  );
}

export default App;

実行します。

npm start

ブラウザから http://プライベートIP:3000にアクセスすると、カウントダウン機能が実装されていることが確認できます。