如何在 ReactJS 中建立日期選擇器?


日期選擇器允許應用程式使用者選擇日期。如果我們以字串格式從使用者那裡獲取資料,他們在輸入日期時可能會出錯,並輸入錯誤的日期格式。

因此,從使用者那裡獲取正確日期輸入的最佳方法是使用日期選擇器。在本教程中,我們將使用 ReactJS 的各種庫並建立一個日期選擇器,允許使用者選擇任何日期、月份、年份或十年。

使用“react-date-picker”NPM 包

React 提供了各種庫和 npm 包來操作日期和時間。“react-date-picker”是最好的庫之一,允許使用者選擇日期。

此外,它還提供了各種額外功能來自定義日期欄位。

在開始使用“react-date-picker”之前,我們需要在我們的 React 專案中安裝它。在專案目錄內的終端中使用以下命令。

npm i react-date-picker

語法

使用者可以按照以下語法使用 react-date-picker。

import DatePicker from "react-date-picker";
<DatePicker onChange={onDateChange} value={dateValue} />

我們在上面的語法中從“react-date-picker”匯入了 DatePicker。之後,我們在 React 元件中使用了 DatePicker。此外,我們在 DatePicker 元件中添加了 onChange 事件。

示例 1

在下面的示例中,我們從 react-date-picker 匯入了 DatePicker。之後,我們在我們的 App.js 檔案中使用了 DatePicker 元件。DatePicker 元件接受各種 props。我們使用 value props 將預設日期值傳遞給元件。

此外,我們在元件中添加了一個 onChange 事件,以便在使用者選擇新日期時觸發 onDateChange() 函式。此外,我們還使用了 useState 鉤子來處理新選擇的日期值。

import React, { useState } from "react";
import DatePicker from "react-date-picker";

export default function App() {
   const [dateValue, onDateChange] = useState(new Date());

   return (
      <>
         <h2>
            Using the <i> react-date-picker </i> with the react functional
            components.{" "}
         </h2>
         <h3>Select any date from the below date picker.</h3>
         <div>
            <DatePicker onChange={onDateChange} value={dateValue} />
         </div>
      </>
   );
}

輸出

示例 2

在這個示例中,我們也使用 react-date-picker 實現日期選擇器,但是我們自定義了日期選擇器。使用者可以看到我們向 DatePicker 元件傳遞了不同的 props。

autofocus props 允許我們自動將焦點放在日期選擇器上,並在元件掛載時。此外,我們還將 closeCalender props 與 false 布林值一起傳遞,以防止使用者選擇日期時關閉日曆。使用者需要點選外部才能關閉日曆。

className props 允許我們將類傳遞給子元件,並使用類名來設定這些元件的樣式。

import React, { useState } from "react";
import DatePicker from "react-date-picker";

export default function App() {
   const [dateValue, onDateChange] = useState(new Date());
   const mystyle = {
      color: "blue",
      backgroundColor: "lightblue",
      padding: "2rem",
   };
   return (
      <>
         <div style={mystyle}>
            <h2>
               Using the<i>react-date-picker</i>with the react functional components.
            </h2>
            <div>
               <DatePicker
                  onChange={onDateChange}
                  value={dateValue}
                  autoFocus={true}
                  className="date-picker"
                  closeCalendar={false}
               />
            </div>
         </div>
      </>
   );
}

輸出

在上面的輸出中,使用者還可以觀察我們如何向網頁新增樣式。

React-date-picker-props

在這裡,我們將瞭解一些有用的 props,我們可以將它們傳遞給 Datepicker 元件來自定義日期。

  • disabled - 它允許我們停用日期選擇器。

  • format - 我們可以使用 format props 指定輸入日期格式。

  • isOpen - 它允許您設定日曆是否應開啟。

  • maxDate - 我們可以使用 maxDate props 設定日期選擇的最大限制。

  • minDate - 我們可以指定選擇日期的最小限制。

  • name - 我們可以使用 name props 自定義日期選擇器的名稱。

  • onChange - 每當使用者從日期選擇器中選擇新的日期值時,都會觸發一個事件。

  • Value - 它是日期的當前值。

使用 HTML input type =“date”和 React 建立日期選擇器

HTML 包含 <input>,它可以從使用者那裡獲取各種型別的輸入,例如文字、數字、日期等。在這裡,我們將使用 <input> 標籤來建立日期選擇器。

語法

使用者可以按照以下語法使用 HTML input 來建立日期選擇器。

<input
   type="date"
   value={date}
   onChange={onDateChange}
/>

在上面的語法中,我們將日期值與輸入繫結,並使用“date”作為型別來使用輸入建立日期選擇器。

示例 3

在下面的示例中,我們使用了 HTML input 來建立日期選擇器,如上面的語法所示。此外,我們還使用了鉤子來處理日期輸入。每當使用者選擇日期時,它都會呼叫 onDateChange() 函式,我們使用 setDate() 函式將日期值設定為 date 變數。

import React, { useState } from "react";

export default function App() {
   const [date, setDate] = useState("none");
   const onDateChange = (event) => {
      setDate(event.target.value);
   };
   const mystyle = {
      color: "black",
      backgroundColor: "lightgrey",
      padding: "2rem",
      width: "700px",
   };
   const dateStyle = {
      backgroundColor: "red",
      width: "13.2rem",
      height: "2rem",
      fontSize: "1.5rem",
   };
   return (
      <>
         <div style={mystyle}>
            <h2>
               Using the <i>HTML date input </i> with the react functional components.
            </h2>
            The selected date is {date}
            <div>
               <input
                  type="date"
                  style={dateStyle}
                  value={date}
                  onChange={onDateChange}
               />
            </div>
         </div>
      </>
   );
}

輸出

在上面的輸出中,使用者可以觀察我們應用於日期輸入欄位的樣式。因此,我們可以像自定義普通 HTML 元素的樣式一樣自定義日期輸入欄位的樣式。

使用者現在可以理解為什麼我們應該使用 react-date-picker 而不是 HTML input。HTML 日期輸入不包含設定最小和最大日期限制或自動聚焦的功能。

在本教程中,我們學習了僅使用 HTML 和 React 庫建立日期選擇器的方法。建議使用 React 庫建立日期選擇器並對其進行更多自定義。

更新於: 2023年2月16日

9K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告