标签: react-dates

如何使用反应钩子检测 Next.js SSR 中的窗口大小?

我正在使用 Next.js 和react-dates构建一个应用程序。

我有两个组件DateRangePicker组件和DayPickerRangeController组件。

当窗口的宽度大于1180px时,我想渲染DateRangePicker,如果尺寸小于这个,我想渲染DayPickerRangeController

这是代码:

      windowSize > 1180 ?
           <DateRangePicker
             startDatePlaceholderText="Start"
             startDate={startDate}
             startDateId="startDate"
             onDatesChange={handleOnDateChange}
             endDate={endDate}
             endDateId="endDate"
             focusedInput={focus}
             transitionDuration={0}
             onFocusChange={(focusedInput) => {
               if (!focusedInput) {
                 setFocus("startDate")
               } else {
                 setFocus(focusedInput)
                }
               }}
                /> :
             <DayPickerRangeController
               isOutsideRange={day => isInclusivelyBeforeDay(day, moment().add(-1, 'days'))}
               startDate={startDate}
               onDatesChange={handleOnDateChange}
               endDate={endDate}
               focusedInput={focus}
               onFocusChange={(focusedInput) => {
               if (!focusedInput) {
                 setFocus("startDate")
                 } else {
                  setFocus(focusedInput)
                 }
               }}
              /> 
          }
Run Code Online (Sandbox Code Playgroud)

我通常使用反应钩与窗口对象检测窗口屏幕宽度像

但是我发现ssr的时候这种方式是不可用的,因为ssr渲染没有window对象。

无论ssr如何,是否有另一种方法可以安全地获得窗口大小?

reactjs server-side-rendering next.js react-dates

12
推荐指数
3
解决办法
1万
查看次数

无法读取未定义的属性'create' - react-date错误

从'react-dates'库中添加SingleDatePicker时,我收到了此错误.尝试了一切,但找不到错误.代码只是显示日历并显示用户选择的日期.请帮忙!这是代码:

import React from 'react';
import moment from 'moment';
import { SingleDatePicker } from 'react-dates';
import 'react-dates/lib/css/_datepicker.css';

export default class ExpenseForm extends React.Component {
  state = {
    createdAt: moment(),
    calenderFocused: false
  };
  onDateChange = (createdAt) => {
    this.setState(() => ({ createdAt }));
  };

  onFocusChange = ({ focused }) => {
    this.setState(() => ({ calenderFocused: focused }));
  };

  render() {
    return (
      <div>
        <form>
          <SingleDatePicker
            date={this.state.createdAt}
            onDateChange={this.onDateChange}
            focused={this.state.calendcalenderFocused}
            onFocusChange={this.onFocusChange}
          />
        </form>
      </div>
    );
  }
};
Run Code Online (Sandbox Code Playgroud)

我在chrome-dev-tool中遇到的错误:

Uncaught TypeError: Cannot read property …
Run Code Online (Sandbox Code Playgroud)

javascript jsx reactjs react-dates

5
推荐指数
2
解决办法
3843
查看次数

Airbnb用非英语语言环境反应日期日历

我正在尝试使用带有非英语语言环境(波斯语)的airbnb react-dates并且一切正常,除了当月的第一天。

月份不是从波斯 (Jalaali) 历法的第一天开始到第 30 天,而是从当月的第 10 天开始并持续到下个月的第 10 天。

这个问题甚至存在于他们的例子中。我想知道是否有任何方法可以解决这个问题。

javascript reactjs react-dates

5
推荐指数
1
解决办法
2440
查看次数

如何正确使用反应日期

我在反应日期方面遇到问题。我最终得到这个警告:

Failed prop type: The prop `startDateId` is marked as required in `withStyles(DateRangePicker)`, but its value is `undefined`.
Run Code Online (Sandbox Code Playgroud)

根据文档,它指出您需要使用此命令:

npm install --save react-dates moment@>=#.## react@>=#.## react-dom@>=#.## react-addons-shallow-compare@>=#.##
Run Code Online (Sandbox Code Playgroud)

我假设哈希值代表您要使用的版本,并且由于它们没有指定任何版本,因此它应该适用于最新版本。

我使用的版本如下:

"react-dates": "^16.0.1", "moment": "^2.20.1", "react": "^16.2.0", "react-dom": "^16.2.0", "react-addons-shallow-compare": "^15.6.2"
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我有以下内容:

import 'react-dates/lib/css/_datepicker.css';
import 'react-dates/initialize';
import { DateRangePicker } from "react-dates";

<DateRangePicker
  startDate={this.props.filters.startDate}
  endDate={this.props.filters.endDate}
  onDatesChange={this.onDatesChange}
  focusedInput={this.state.calendarFocused}
  onFocusChange={this.onFocusChanged}
/>
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么会出现此错误以及如何删除它?

reactjs react-redux react-dates

4
推荐指数
1
解决办法
7574
查看次数

使用react-dates添加最大天数

我想知道是否可以添加使用反应日期选择的最大天数。基本上是已经存在的minimumNights属性的倒数。

干杯

javascript reactjs react-dates

2
推荐指数
1
解决办法
2381
查看次数

如何在react-dates中添加一年的选择?

在我到达正确的一年之前刷几个月是痛苦的react-dates,是否有可能在年/月添加一些选择

javascript calendar reactjs react-dates

1
推荐指数
2
解决办法
1905
查看次数

为反应日期设置默认的startDate和endDate属性

为react-dates组件设置startDate和endDate的默认值会破坏该组件,并出现以下错误:

我的反应版本:“反应”:“ ^ 16.5.2”“反应日期”:“ ^ 18.1.0”

组件代码:

import React from 'react'

import 'react-dates/initialize';
import { DateRangePicker } from 'react-dates';
import 'react-dates/lib/css/_datepicker.css';

class DateRangeSelector extends React.Component {
  constructor(props) {
    super(props);

    this.state = {
      startDate: moment().subtract(2, 'year'),
      endDate: moment(),
      // focusedInput: 'startDate'
    }

  }

  render() {

    return (

      <DateRangePicker
        startDate={this.state.startDate} // momentPropTypes.momentObj or null,
        startDateId={this.props.startDateInputId} // PropTypes.string.isRequired,
        endDate={this.state.endDate} // momentPropTypes.momentObj or null,
        endDateId={this.props.endDateInputId} // PropTypes.string.isRequired,
        onDatesChange={({ startDate, endDate }) => this.setState({ startDate, endDate })}
        isOutsideRange={() => false}
        focusedInput={this.state.focusedInput} // PropTypes.oneOf([START_DATE, END_DATE]) or …
Run Code Online (Sandbox Code Playgroud)

reactjs react-dates

0
推荐指数
1
解决办法
3127
查看次数