首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >react-datepicker年份范围

react-datepicker年份范围
EN

Stack Overflow用户
提问于 2020-08-03 05:47:11
回答 2查看 2.1K关注 0票数 2

我正在使用react-datepicker包。https://reactdatepicker.com/

我正在尝试创建一个具有年份范围的自定义日期选择器,遵循他们的示例,但我无法使range工作。我甚至不确定我是不是从正确的地方导入了那个range

我的代码:

代码语言:javascript
复制
import DatePicker, {getYear, getMonth, range}  from 'react-datepicker';
import "react-datepicker/dist/react-datepicker.css";


const Foo = () => {
    const [startDate, setStartDate] = useState(new Date());
    const years = range(1990, getYear(new Date()) + 1, 1);
    const months = [
      "January",
      "February",
      "March",
      "April",
      "May",
      "June",
      "July",
      "August",
      "September",
      "October",
      "November",
      "December"
    ];
    return (
      <DatePicker
        renderCustomHeader={({
          date,
          changeYear,
          changeMonth,
          decreaseMonth,
          increaseMonth,
          prevMonthButtonDisabled,
          nextMonthButtonDisabled
        }) => (
          <div
            style={{
              margin: 10,
              display: "flex",
              justifyContent: "center"
            }}
          >
            <button onClick={decreaseMonth} disabled={prevMonthButtonDisabled}>
              {"<"}
            </button>
            <select
              value={getYear(date)}
              onChange={({ target: { value } }) => changeYear(value)}
            >
              {years.map(option => (
                <option key={option} value={option}>
                  {option}
                </option>
              ))}
            </select>
  
            <select
              value={months[getMonth(date)]}
              onChange={({ target: { value } }) =>
                changeMonth(months.indexOf(value))
              }
            >
              {months.map(option => (
                <option key={option} value={option}>
                  {option}
                </option>
              ))}
            </select>
  
            <button onClick={increaseMonth} disabled={nextMonthButtonDisabled}>
              {">"}
            </button>
          </div>
        )}
        selected={startDate}
        onChange={date => setStartDate(date)}
      />
    );
  };

我的错误:

代码语言:javascript
复制
TypeError: Object(...) is not a function

const years = range(1990, getYear(new Date()) + 1, 1);
EN

回答 2

Stack Overflow用户

发布于 2020-10-19 19:45:09

使用下面的导入,文档中的所有代码都可以很好地工作!

代码语言:javascript
复制
import { getMonth, getYear } from 'date-fns';
import range from "lodash/range";
票数 5
EN

Stack Overflow用户

发布于 2020-08-03 06:57:34

函数getYear和getMonth从date-fns库导入到react-datepicker/src/date_utils.js

我不知道值域函数。我看到他们的site在一个示例中使用了它(只有一堆示例,没有文档),但没有其他的东西。

您可以简单地从date-fns (作为DataPicker的依赖项)导入并创建一个范围函数。

代码语言:javascript
复制
import React, { useState } from "react";
import DatePicker from "react-datepicker";
import getYear from "date-fns/getYear";
import getMonth from "date-fns/getYear";
import "react-datepicker/dist/react-datepicker.css";

const Foo = () => {
  const [startDate, setStartDate] = useState(new Date());

  const range = (start, end) => {
    return new Array(end - start).fill().map((d, i) => i + start);
  };
  const years = range(1990, getYear(new Date()));
(...)

您可以查看正在运行的演示here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63221355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档