📜  在 React 中捕捉时间(1)

📅  最后修改于: 2023-12-03 14:51:09.604000             🧑  作者: Mango

在 React 中捕捉时间

在 React 中,我们经常需要捕捉用户的时间输入,或者是显示当前的时间。本文将介绍在 React 中如何捕捉时间。

1. 使用 Date 对象

使用 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;

这里使用了 useStateuseEffect Hook,挂载组件后每秒更新一次时间。

2. 使用第三方库

如果需要更加复杂的时间格式化工具或者时区转换等功能,可以使用第三方库。比如 moment.jsday.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 来计算距离下一个元旦还有多少天、小时、分钟和秒数。

3. 捕捉用户的时间输入

当用户需要输入一个日期或时间时,我们可以使用 <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 对象可以获取当前时间,使用第三方库可以处理更复杂的时间格式和时区问题,使用输入元素可以捕捉用户的时间输入。开发者应该根据具体需求选择合适的方法。