reactjs React-nice-calendar缺少一年

bnl4lu3b  于 2023-03-22  发布在  React
关注(0)|答案(2)|浏览(94)

我在我的应用程序中使用了react-nice-calendar。问题是日历中的年份丢失了,如图所示。我该如何解决这个问题呢?
代码:

const [date, setDate] = useState();

   <DatePickerCalendar
          date={date}
          onDateChange={setDate}
          locale={enGB}
     />

jum4pzuy

jum4pzuy1#

如果你想显示年份,你必须用date-fns dependencie来格式化日期,所以我举了一个例子:https://reactnicedates.hernansartorio.com/

import React, { useState } from 'react'
import { format } from 'date-fns'
import { enGB } from 'date-fns/locale'
import { DatePickerCalendar } from 'react-nice-dates'
import 'react-nice-dates/build/style.css'
function DatePickerCalendarExample() {
  const [date, setDate] = useState()
  return (
    <div>
      <p>
        Selected date: {date ? format(date, 'dd MMM yyyy', { locale: enGB }) : 'none'}.
      </p>
      <DatePickerCalendar date={date} onDateChange={setDate} locale={enGB} />
    </div>
  )
}

这里有一个codesandbox:https://codesandbox.io/s/datepicker-default-example-0kn7i
如果您在当前年份,则不会显示:
二零二一年(本年度):

2023年:

yptwkmov

yptwkmov2#

react-nice-calendar不显示当前年份。我也遇到过同样的问题,并找到了一个优雅的解决方案。可以在上层导航中使用CSS隐藏月份,然后添加自己的月份。
1.隐藏内置月份:

.nice-dates-navigation_current {
  display: none;
}

1.添加您自己的月份和年份,并使用适当的格式和样式

<p className="calendar__current-date"> 
    {selectedDate.month}
</p>
<Calendar
    locale={enGB}
    month={selectedDate.date}
    onMonthChange={handleMonthChange}
/>

1.最后管理Calendar的状态

import { format } from 'date-fns'
 
  ...

  const [selectedDate, setSelectedDate] = useState<{
    date: Date
    month: string
  }>({
    date: new Date(),
    month: format(new Date(), 'MMMM yyyy', { locale: enGB })
  })

...

  const handleMonthChange = (date: any) => setSelectedDate({
    date,
    month: format(date, 'MMMM yyyy', { locale: enGB })
  })

相关问题