📅  最后修改于: 2023-12-03 14:51:09.604000             🧑  作者: Mango
在 React 中,我们经常需要捕捉用户的时间输入,或者是显示当前的时间。本文将介绍在 React 中如何捕捉时间。
使用 JavaScript 的内置对象 Date
可以获取当前时间,代码如下:
import React, { useState, useEffect } from 'react';
function Clock() {
const [date, setDate] = useState(new Date());
useEffect(() => {
const timer = setInterval(() => setDate(new Date()), 1000);
return () => clearInterval(timer);
}, []);
return <h1>{date.toLocaleTimeString()}</h1>;
}
export default Clock;
这里使用了 useState
和 useEffect
Hook,挂载组件后每秒更新一次时间。
如果需要更加复杂的时间格式化工具或者时区转换等功能,可以使用第三方库。比如 moment.js
和 day.js
都是常用的时间处理库,可以方便地安装和使用。
import React from 'react';
import dayjs from 'dayjs';
function Countdown() {
const endDate = dayjs('2022-01-01');
const days = endDate.diff(dayjs(), 'day');
const hours = endDate.diff(dayjs(), 'hour') % 24;
const minutes = endDate.diff(dayjs(), 'minute') % 60;
const seconds = endDate.diff(dayjs(), 'second') % 60;
return (
<>
<h1>New Year Countdown</h1>
<p>{days} days {hours} hours {minutes} minutes {seconds} seconds</p>
</>
);
}
export default Countdown;
我们使用 day.js
来计算距离下一个元旦还有多少天、小时、分钟和秒数。
当用户需要输入一个日期或时间时,我们可以使用 <input type="date">
和 <input type="time">
元素。
import React, { useState } from 'react';
function Appointment() {
const [date, setDate] = useState('');
const [time, setTime] = useState('');
const onSubmit = (e) => {
e.preventDefault();
console.log('Appointment date:', date);
console.log('Appointment time:', time);
};
return (
<form onSubmit={onSubmit}>
<label htmlFor="appointment-date">Date:</label>
<input type="date" id="appointment-date" value={date} onChange={(e) => setDate(e.target.value)} />
<label htmlFor="appointment-time">Time:</label>
<input type="time" id="appointment-time" value={time} onChange={(e) => setTime(e.target.value)} />
<button type="submit">Book Appointment</button>
</form>
);
}
export default Appointment;
这里我们使用了 useState
来保存用户输入的日期和时间,onChange
事件处理函数更新状态。当用户提交表单时,我们可以使用保存的状态值发送请求或者做其他操作。
在 React 中捕捉时间有多种方法,使用 JavaScript 的 Date
对象可以获取当前时间,使用第三方库可以处理更复杂的时间格式和时区问题,使用输入元素可以捕捉用户的时间输入。开发者应该根据具体需求选择合适的方法。