ゲームの中でユーザーが入力した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フックを使って、コンポーネントがマウントされたときや残り時間が変わるたびに関数を実行します。このゲームは、ユーザーが正しい単語を入力するたびに現在の単語が変化し、その単語の長さが現在のスコアに加算されます。時間が経過すると、スコアが表示されます。
Aquí te presento un componente funcional de ReactJS que podría utilizarse para contar las palabras por minuto que tipea un usuario en un juego:

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;
Este componente utiliza el hook useState para manejar el estado de la palabra actual, el valor del input, el puntaje y el tiempo restante. También utiliza los hooks useEffect para ejecutar funciones al montar el componente y cada vez que cambia el tiempo restante. El juego funciona cambiando la palabra actual cada vez que el usuario ingresa la palabra correcta, sumando la longitud de la palabra al puntaje actual. Al final del tiempo, se muestra el puntaje obtenido.