Есть ли способ увеличить число, начиная с 00 до 01, 02 и т. Д. и т. Д. До 9, а затем увеличивать обычно до 60?

#javascript #reactjs

Вопрос:

У меня есть постоянное состояние [minutes, setMinutes] = useState('0'); и событие щелчка, чтобы увеличить количество минут с 00 до 60 (где должно быть увеличение с 0 до 9 01 02 03 04 05 06 07 08 09) а затем от 10 до 60 с нормальным шагом 1 возвращается к 00 после достижения 60-й минуты. Начальное состояние-это строка, потому что я называю ее в поле ввода, начальным значением которого является строка.

У меня есть стилизованный компонент, который является входным, и я передаю <SquareInput value={minutes} /> , где минуты-это состояние, о котором я упоминал выше.

ЭТО МОЙ ПЕРВОНАЧАЛЬНЫЙ КОД:

   const incrementMinutes = () => {
    setMinutes((prevMinutes) => {
      // if there is nothing
      if (!prevMinutes) {
        return '00';
      } else if ( prevMinutes >= 60) {
        return '00';
      } else if ( prevMinutes >= 0 amp;amp;  prevMinutes <= 9) {
        return String((0    prevMinutes).slice(-2)  1);
      } else {
        return String( prevMinutes   1);
      } 
    });
  };
 

Я пробую разные вещи, но не уверен, кажется, ничего не работает. Есть какие-нибудь зацепки? Что это я делаю не так?

Комментарии:

1. Почему бы вам не указать значение состояния в качестве числа , а затем соответствующим образом дополнить его там, где оно отображается ?

2. Вы, вероятно, захотите вместо этого работать с a number и отображать только дополненный номер в конце.

3. Как вы отображаете значение? Где вы вставляете его в свой вид? Вот где вы преобразуете число в (дополненную) строку. Кроме того, просто работайте над числовым значением и не беспокойтесь о начальных нулях.

4. @Nokwiw действительно пришло время перестать предлагать MomentJS для чего-то вроде простого отображения времени

5. Ваш вопрос не имеет особого смысла: «Есть ли способ увеличить число, начиная с 00 до 01, 02 и т. Д. и т. Д. До 9, а затем увеличивать обычно до 60?» 09 не является допустимым числом. Вы можете увеличить число number = (number 1) % 60 , преобразовать его в строку и дополнить ее.

Ответ №1:

Я думаю, что это может сделать работу, 0 перед числом можно сделать с помощью проверки размера строки 😛

 setMinutes((prevMinutes) => {
      if (!prevMinutes ||  prevMinutes >= 60) {
        return '00';
      } else {
        const currentMinute = ""   ( prevMinutes   1);
        if (currentMinute.length === 1) {
           return "0"   currentMinute;
        }
        return currentMinute;
      }
 

Комментарии:

1. @user14749773 Я думаю, что есть недопонимание того факта, что ввод-это число или строка (но в любом случае вы используете si, это может быть и то и другое, поэтому я не вижу проблемы для меня, вопрос верен :P)