首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在react-native-calendars中动态标记日期

在react-native-calendars中动态标记日期
EN

Stack Overflow用户
提问于 2019-12-09 14:53:22
回答 3查看 2.8K关注 0票数 1

我试图在从api调用中获得的react-native-calendars中标记日期。有人能帮帮忙吗?

代码语言:javascript
复制
<Calendar
markingType={'multi-dot'}
markedDates={this.state.dates}
/>

在构造函数中,我维护

代码语言:javascript
复制
this.state = {dates : []}

我调用了标记为()的函数,在该函数中映射数据并将日期推入另一个数组中,然后执行setState操作

代码语言:javascript
复制
this.setState({ 
    dates : {
        [attendance] : [
            { 
                key: 'vacation', 
                color: 'blue', 
                selectedDotColor: 'red' 
            }
        ]
    }
})

我可以自由地分享我的代码。附言:我是个新手。感谢安万斯

EN

回答 3

Stack Overflow用户

发布于 2019-12-09 17:40:53

请使用这个库,它可以很容易地通过自定义日期样式"react-native-calendar-picker“进行自定义

票数 0
EN

Stack Overflow用户

发布于 2019-12-09 22:15:30

确保markedDates参数是不可变的。如果您更改了markedDates对象内容,但对它的引用没有更改,则不会触发日历更新。

请试一试;

代码语言:javascript
复制
  markedDates={{
    '2019-12-9': {
      periods: [
        { startingDay: false, endingDay: true, color: '#5f9ea0' },
        { startingDay: false, endingDay: true, color: '#ffa500' },
        { startingDay: true, endingDay: false, color: '#f0e68c' },
      ]
    },
    '2019-12-9': {
      periods: [
        { startingDay: true, endingDay: false, color: '#ffa500' },
        { color: 'transparent' },
        { startingDay: false, endingDay: false, color: '#f0e68c' },
      ]
    },
  }}
票数 0
EN

Stack Overflow用户

发布于 2019-12-09 23:44:41

实际上,我最近不得不对react-native-calendars做同样的事情。下面是我用来创建标记日期的函数的简化版本:

代码语言:javascript
复制
 createMarkedDates = (dates) => {
    let markedEvents = {};
    let numEvents = {};
    let uniqueDates = [...new Set(dates)]; //remove duplicate event dates

    dates.forEach(function (count) { //if multiple events on one date, determine how many events are on each date
        numEvents[count] = (numEvents[count] || 0) + 1;
    });
        uniqueDates.forEach(function (date) {
            let dots = [];
            let markedData = {};
            for (let i = 0; i < numEvents[date]; i++) {
                dots.push(event); //add dots for as many events are on that day
            }
            markedData['dots'] = dots; //set the array of dots
            markedEvents[date] = markedData; //add markers to marked dates
        });
    };
    this.setState({markedDates: markedEvents});
}

dates是从API传递的日期数组。

这应该会输出一个带有每个日期标记的带标记的date对象,而且如果你需要它,如果它在你的数组中出现多次,它会在一天中放置多个点。

此外,我认为您的日期需要在ISO日期格式(YYYY-MM-DD)的react-native-calendars中标记日期。

我希望这个例子能有所帮助!

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

https://stackoverflow.com/questions/59243865

复制
相关文章

相似问题

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