human
そのタイプの1分あたりの単語をカウントするゲームの機能的なReactJSコンポーネントを作成します。ユーザーはプレイをクリックして、画面に単語を確認し、入力では天候が実行されている間に導入する必要があります。送信では、単語の長さが初期スコア（0）に追加され、時間の終わりには得られたポイント数を表示する必要があります。
gpt
ゲームの中でユーザーが入力した1分あたりの単語数をカウントするために使用できる、機能的なReactJSコンポーネントを紹介します：

```
import React, { useState, useEffect } from 'react';

const TypingGame = () => {
  const [words, setWords] = useState(['hello', 'world', 'react', 'javascript']); // Palabras disponibles para el juego
  const [currentWord, setCurrentWord] = useState(''); // Palabra actual que se muestra en pantalla
  const [inputValue, setInputValue] = useState(''); // Valor del input donde el usuario tipea la palabra
  const [score, setScore] = useState(0); // Puntaje inicial
  const [timeLeft, setTimeLeft] = useState(60); // Tiempo inicial

  // Función que cambia la palabra actual y reinicia el valor del input
  const changeWord = () => {
    const randomIndex = Math.floor(Math.random() * words.length);
    setCurrentWord(words[randomIndex]);
    setInputValue('');
  };

  // Función que se ejecuta cada vez que el usuario hace submit en el input
  const handleSubmit = (e) => {
    e.preventDefault();
    if (inputValue === currentWord) {
      // Si la palabra ingresada es correcta, sumamos su longitud al puntaje actual
      setScore(score + currentWord.length);
      // Cambiamos la palabra actual por otra aleatoria
      changeWord();
    }
  };

  // Función que se ejecuta cada segundo y reduce el tiempo restante en uno
  useEffect(() => {
    if (timeLeft > 0) {
      const timerId = setTimeout(() => {
        setTimeLeft(timeLeft - 1);
      }, 1000);
      return () => clearTimeout(timerId);
    }
  }, [timeLeft]);

  // Función que se ejecuta al montar el componente y elige una palabra aleatoria para empezar
  useEffect(() => {
    changeWord();
  }, []);

  return (
    <div>
      <h2>Typing Game</h2>
      <p>Current word: {currentWord}</p>
      <form onSubmit={handleSubmit}>
        <label>
          Type the word:
          <input type="text" value={inputValue} onChange={(e) => setInputValue(e.target.value)} />
        </label>
        <button type="submit">Submit</button>
      </form>
      <p>Score: {score}</p>
      <p>Time left: {timeLeft}</p>
    </div>
  );
};
```

export default TypingGame；
このコンポーネントは、useStateフックを使って、現在の単語、入力値、スコア、残り時間の状態を扱う。また、useEffectフックを使って、コンポーネントがマウントされたときや残り時間が変わるたびに関数を実行します。このゲームは、ユーザーが正しい単語を入力するたびに現在の単語が変化し、その単語の長さが現在のスコアに加算されます。時間が経過すると、スコアが表示されます。