首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在react-native-calendars的项目属性中动态更改日期键的日期

如何在react-native-calendars的项目属性中动态更改日期键的日期
EN

Stack Overflow用户
提问于 2019-10-12 14:32:54
回答 1查看 2.6K关注 0票数 0

我正在尝试更改react原生日历的项目属性中的日期。从文档中可以看出,它需要一个日期字符串作为键,然后需要一个对象数组来显示该特定日期。

就像这样。

代码语言:javascript
复制
<Agenda
    items: {{
        '2019-10-12': [],
        '2019-10-13': [{}, {}],
        '2019-10-14': [{}],
        '2019-10-15': []
    }}
/>

但是,我不想硬编码日期。我想要的是显示下周的日期。这是我尝试过的方法

我使用以下命令获取日期:

代码语言:javascript
复制
 new currentDate = new Date();

我将这个日期传递到weekly中,以获得我的weekly对象。下面的函数使用另外两个名为addDaysdateToString的函数来正确呈现日期。

代码语言:javascript
复制
const weeklyItems = (date) => {
    const day1 = dateToString(addDays(date, 1));
    const day2 = dateToString(addDays(date, 2));
    const day3 = dateToString(addDays(date, 3));
    const day4 = dateToString(addDays(date, 4));
    const day5 = dateToString(addDays(date, 5));
    const day6 = dateToString(addDays(date, 6));
    const currentDate = dateToString(date);
    return {
        currentDate : [],
        day1: [],
        day2: [],
        day3: [],
        day4: [],
        day5: [],
        day6: []
    }
}

addDaysdateToString是我的助手函数:

代码语言:javascript
复制
function addDays(date, days) {
    var result = new Date(date);
    result.setDate(result.getDate() + days);
    return result;
}

此函数用于将date对象转换为Agenda所需的'YYYY-MM-DD‘格式

代码语言:javascript
复制
function dateToString (date) {
    const newString  = moment(date).format('YYYY-MM-DD');
    return newString.toString()
}

我已经检查过我的日期是否正确,它们都是正确的。我还使用currentDateday6作为minDate的对象,使用maxDate作为Agenda的道具,它们可以正常工作。

完成此操作后,我的Agenda现在看起来如下所示:

代码语言:javascript
复制
 <Agenda
    minDate = {currentDate}
    maxDate = {day6}
    selected = {currentDate}
    items: {weeklyItems(currentDate)}
    renderEmptyDate={() => {return (<View/>);}}
/>

这会让它停止工作。我知道我的weeklyItems中有空数组,但现在我只是尝试让日期工作,不幸的是它们不是。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-12 15:47:59

我在手机上,所以我不能运行这段代码...

尝试像这样返回dates对象:

代码语言:javascript
复制
return {
    [currentDate] : [],
    [day1]: [],
    ...
}

此外,您还可以重写weeklyItems函数以从0迭代到6,并将属性动态设置为将返回的对象。

而不是在组件中:

代码语言:javascript
复制
// somewhere in your js
// const dates = weeklyItems(currentDate)
// const minDate = dateToString(date)
// const maxDate = dateToString(addDays(date, 6))

<Agenda
  minDate = {minDate}
  maxDate = {maxDate}
  selected = {minDate}
  items: {dates}
  renderEmptyDate={() => {return (<View/>);}}
/>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58351520

复制
相关文章

相似问题

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