Javascript 反应本机日历:选择日期时打开/关闭选择

Javascript 反应本机日历:选择日期时打开/关闭选择,javascript,react-native,Javascript,React Native,我正在为我的项目使用。当我按日期时,我可以在日历上标记。但是当再次按下标记的日期时,我想将其标记掉 这是我的功能代码: onDayPress = (day) => { const _selectedDay = Moment(day.dateString).format(_format); this.setState(({pressedDate}) => ({ pressedDate: { ...pressedDa

我正在为我的项目使用。当我按日期时,我可以在日历上标记。但是当再次按下标记的日期时,我想将其标记掉

这是我的功能代码:

 onDayPress = (day) => {
        const _selectedDay = Moment(day.dateString).format(_format);
        this.setState(({pressedDate}) => ({
         pressedDate: {
          ...pressedDate,
          [_selectedDay] : {
          selected: true
          }
       },
       selectedDay:_selectedDay
     }))
     console.log(this.state.pressedDate, 'this.state.pressedDate')
    }
在我的日历上

<Calendar
           style={styles.calendarBox}
           markedDates={this.state.pressedDate}
           onDayPress={this.onDayPress}
           markingType={'multi-dot'}
           monthFormat={'yyyy MMMM'}/>

有什么方法可以标记日期的长短吗?另外,我只想标记三个日期。这可能吗

另外,当我
console.log('this.state.pressedDate')
时,我首先会得到未定义的。当我再次点击它时,我会得到值,知道为什么会发生这种情况吗

有什么方法可以标记日期的长短吗

如中所示,它仅在您将差异
current
传递到此组件时更新。你可以这样做:

  _onDayPress = day => {
    const { dateString } = day;
    const { markedDates } = this.state;

    const isMarkedBefore = !!(
      markedDates[`${dateString}`] && 
      markedDates[`${dateString}`].selected
    );
    markedDates[`${dateString}`] = { selected: !isMarkedBefore };

    this.setState(
     { ...this.state, markedDates, current: null }, 
     () => {
       this.setState({
        ...this.state,
        current: dateString
       });
     });
  };


  ...
  <Calendar
       style={styles.calendarBox}
       current={this.state.current}
       markedDates={this.state.markedDates}
       onDayPress={this._onDayPress}
       markingType={'multi-dot'}
       monthFormat={'yyyy MMMM'}/>

谢谢你的回答。看起来你的代码看起来不错,但由于某种原因,当我在某一天按下时,它不会标记日期。你能检查一下吗?谢谢:)
   this.setState({...someState}, () => {
     console.log(this.state);
   })