【React】ステートによるデータ更新

今までは固定の文字をブラウザへ表示しました。

今回はブラウザへ動的に文字を表示させます。

説明

Reactにおけるステート処理の概要

Reactにはステートと言うデータを保持、更新する機能が存在します。ステートはデータを保持し、それを更新する事で、ブラウザの表示内容を変更します。

ステート処理の使い方と説明

ステートを使うには useState 関数を使います。

// ステート
const [val, setVal] = React.useState('first');

この関数の引数には保持したいデータの初期値を設定します。この関数から配列が返却され、第一要素はuseState関数で指定した引数の値が返却されます。第二要素は設定値を更新する関数が返却されます。
設定値を更新する関数へ設定したい値を設定すると、現在の設定値が更新され、画面に表示される内容が変更されます。

実例

やりたい事

3秒毎に現在時刻をブラウザへ表示させます。

ステート処理の例

Appコンポーネントを以下のように書き換えます。

import React from 'react';

function App() {

  // 現在時刻を返却する
  const showClock = () => {
    const nowTime = new Date();
    const nowHour = nowTime.getHours();
    const nowMin  = nowTime.getMinutes();
    const nowSec  = nowTime.getSeconds();
    return "現在時刻:" + nowHour + ":" + nowMin + ":" + nowSec;
  };

  // ステート
  const [val, setVal] = React.useState(showClock());

  // 3秒ごとに現在時刻を更新する
  setTimeout(() => {
    setVal(showClock());
  }, 3000);

  return (
    <div>{val}</div>
  );
}

export default App;

ステートの利用

以下がステートの利用を開始している箇所になります。
ステートの引数を指定するとステート値の初期値として設定されます。
ここでは、引数に現在時刻(showClock関数)を設定しているので、showClock関数の実行結果がステート値(val変数)の初期値として設定されます。

// ステート
const [val, setVal] = React.useState(showClock());

現在時刻の返却

showClock関数は現在時刻を返却する関数です。

  // 現在時刻を返却する
  const showClock = () => {
    const nowTime = new Date();
    const nowHour = nowTime.getHours();
    const nowMin  = nowTime.getMinutes();
    const nowSec  = nowTime.getSeconds();
    return "現在時刻:" + nowHour + ":" + nowMin + ":" + nowSec;
  };

ステート値の更新

setTimeout関数の中でスーテト値更新関数であるsetVal関数が実行されます。3秒置きにsetVal関数へ現在時刻(showClock関数)を設定しています。

  // 3秒ごとに現在時刻を更新する
  setTimeout(() => {
    setVal(showClock());
  }, 3000);

ステート値の表示

ステート値である val をブラウザへ表示させます。3秒置きにsetVal関数へ現在時刻が設定され、これに伴い val の値も変更されるので、3秒置きに表示される内容も変わります。

  return (
    <div>{val}</div>
  );

最後に

特にありません。

コメントを残す

メールアドレスが公開されることはありません。

© DeNnie.Lab All Rights Reserved.