【问题标题】:React date picker filtering dates issue反应日期选择器过滤日期问题
【发布时间】:2020-06-07 00:58:45
【问题描述】:

我正在使用https://reactdatepicker.com

我似乎在限制周末方面遇到了问题,如示例所示。

我正在使用类组件并尝试从docs 实现这个功能示例

来自文档的示例:

() => {
  const [startDate, setStartDate] = useState(null);
  const isWeekday = date => {
    const day = getDay(date);
    return day !== 0 && day !== 6;
  };
  return (
    <DatePicker
      selected={startDate}
      onChange={date => setStartDate(date)}
      filterDate={isWeekday}
      placeholderText="Select a weekday"
    />
  );
};

这是我尝试过的:我创建了isWeekday 函数并将其传递给DatePicker

import React from 'react'
import DatePicker from 'react-datepicker'
import getDay from 'react-datepicker'
import 'react-datepicker/dist/react-datepicker.css'

const isWeekday = (date) => {
  const day = getDay(date)
  return day !== 0 && day !== 6
}

export class Random extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      settlementDate: new Date(),
    }
  }

  render() {
    <DatePicker
      selected={this.state.settlementDate}
      onChange={(date) => this.setState({ settlementDate: date })}
      minDate={new Date()}
      filterDate={isWeekday}
    />
  }
}

但我收到以下错误:

TypeError:无法将类作为函数调用

如何制作一个限制周末的日期选择器?

【问题讨论】:

  • 您有关于该追溯的更多详细信息吗?我认为这里缺少一些东西。
  • 能贴出完整的组件代码吗?
  • 不能将类作为函数调用意味着您正在调用的函数实际上不是函数。我会查看堆栈跟踪,看看试图作为函数调用的内容。当我错误地导入东西时,我遇到了这个问题。
  • 我已经更新了上面的帖子。还是个问题……

标签: javascript reactjs react-datepicker


【解决方案1】:

您遇到了错误:

TypeError:无法将类作为函数调用

因为您在从react-datepicker 导入默认成员后将类作为函数调用

不正确:

import getDay from 'react-datepicker' // You imported default class as `getDay`
const day = getDay(date) // You tried to call the class

注意: getDay 不应该来自 react-datepicker。是标准的JSDate的方法。

正确:

import React, { Component } from 'react'
import DatePicker from 'react-datepicker'

class SelectWeekDay extends Component<any, any> {
  constructor(props) {
    super(props)
    this.state = {
      startDate: null,
    }
  }

  isWeekday = (date: Date) => {
    const day = date.getDay()
    return day !== 0 && day !== 6
  }

  render() {
    return (
      <>
        <DatePicker
          selected={this.state.startDate}
          onChange={(date) =>
            this.setState({
              startDate: date,
            })
          }
          filterDate={this.isWeekday}
        />
      </>
    )
  }
}

【讨论】:

  • 我收到(date: Date) 的语法错误
  • @FiddleFreak 你能发布完整的错误信息吗?
  • Type annotations can only be used in TypeScript files.。如果我将其更改为 (date),它似乎工作得很好。
  • 我认为您使用的是 javascript 而不是 typescript,所以 (date) 是实现相同目标的正确方法。
  • 啊,好吧,这个问题被标记为 javascript,所以我假设是这样。
猜你喜欢
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 2021-01-11
  • 2011-10-20
  • 1970-01-01
相关资源
最近更新 更多