首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >突出显示按下(选定的)日期在React本机日历

突出显示按下(选定的)日期在React本机日历
EN

Stack Overflow用户
提问于 2020-01-05 09:26:42
回答 2查看 8.5K关注 0票数 5

在我的项目中,我使用了react本机日历库。目前,我可以通过onPress获得约会。但问题是如何突出这一日期。逻辑:当用户按下日期时,应该以任何颜色突出显示。主要原因是要区分选定的日期和其余的日期。这是源代码

这是我的代码片段,负责获取当前日期:

代码语言:javascript
复制
state={
  selectedDate: '',
}

const getSelectedDayEvents = (date) => {
    let serviceDate = moment(date);
    serviceDate = serviceDate.format("DD.MM.YYYY");
    this.setState({selectedDate: serviceDate});
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-05 09:59:52

根据文件您需要使用markedDates={}来显示突出显示的天数。

代码语言:javascript
复制
<Calendar
  markedDates={{
    '2012-05-16': {selected: true, marked: true, selectedColor: 'blue'},
    '2012-05-17': {marked: true},
    '2012-05-18': {marked: true, dotColor: 'red', activeOpacity: 0},
    '2012-05-19': {disabled: true, disableTouchEvent: true}
  }}
/>

编辑

  1. markedDates添加到初始状态。
代码语言:javascript
复制
state = {
    selectedDate: "",
    markedDates: {}
};
  1. 更改getSelectedDayEvents函数以创建markedDates对象&将其分配给状态。
代码语言:javascript
复制
getSelectedDayEvents = date => {
    let markedDates = {};
    markedDates[date] = { selected: true, color: '#00B0BF', textColor: '#FFFFFF' };
    let serviceDate = moment(date);
    serviceDate = serviceDate.format("DD.MM.YYYY");
    this.setState({
        selectedDate: serviceDate,
        markedDates: markedDates
    });
};
  1. 更改日历组件以接受markedDates
代码语言:javascript
复制
<Calendar
  style={{ height: 300, width: "90%", justifyContent: "center" }}
  theme={{
    backgroundColor: "#ffffff",
    calendarBackground: "#ffffff",
    todayTextColor: "#57B9BB",
    dayTextColor: "#222222",
    textDisabledColor: "#d9e1e8",
    monthTextColor: "#57B9BB",
    arrowColor: "#57B9BB",
    textDayFontWeight: "300",
    textMonthFontWeight: "bold",
    textDayHeaderFontWeight: "500",
    textDayFontSize: 16,
    textMonthFontSize: 18,
    selectedDayBackgroundColor: "#57B9BB",
    selectedDayTextColor: "white",
    textDayHeaderFontSize: 8
  }}
  minDate={"1996-05-10"}
  maxDate={"2030-05-30"}
  monthFormat={"MMMM yyyy "}
  markedDates={this.state.markedDates}
  scrollEnabled={true}
  horizontal={true}
  showScrollIndicator={true}
  disableMonthChange={true}
  onDayPress={day => {
    getSelectedDayEvents(day.dateString);
  }}
/>

如果你有面团,可以随便问。希望这能帮到你。

票数 8
EN

Stack Overflow用户

发布于 2020-11-02 08:49:33

代码语言:javascript
复制
<Calendar
minDate={this.state.date}
onDayPress={(day) =>  this.setState({selected_date: day.dateString})}
renderArrow={(direction) =>  direction == 'left' ? <IconContainer iconObject={LEFT_ICON}  /> : <IconContainer iconObject={RIGHT_ICON}  />}
markedDates={{
  [this.state.selected_date]: {
    selected: true,
    disableTouchEvent: true,
    selectedColor: '#F1EFFE',
    selectedTextColor: '#7954FA',
  },
}}
theme={{
  todayTextColor: '#7954FA',
'stylesheet.calendar.header': {
  dayHeader:{
    color:'#616061',
    fontWeight:'bold'
  }
}
}}
/>

国家:--

代码语言:javascript
复制
state={
    date: moment().format("YYYY-MM-DD"),
    selected_date:null,
  }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59598513

复制
相关文章

相似问题

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