#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)