首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用react-calendar动态呈现列表?

如何使用react-calendar动态呈现列表?
EN

Stack Overflow用户
提问于 2020-02-14 03:25:56
回答 1查看 311关注 0票数 0

我想呈现一个在某个日期安排的课程列表,一旦用户点击这个日期,在日历上,显示在应用程序上。

为此,我使用了react-calendar

我已经使用onClickDay function做了一个测试,看看它是否会呈现我已经有的列表,并且它起作用了。因此,当我单击任何一天时,都会呈现一个列表。

我现在想要的是呈现一个与日历上选择的日期相关的列表。例如,点击2月13日的日历,渲染2月13日的所有课程。

我假设我需要在state上的类的array上设置日期和时间,这样我就可以验证在日历上选择的日期是否与在state上设置的日期匹配,从而相应地呈现适当的列表。

我没有在这个库的文档中找到如何进行这种验证,这种验证可以将日历中的日期与我的类的array中的日期进行比较。

请参阅完整的代码here

下面是这段代码的打印结果:

代码语言:javascript
复制
import React from "react";
import "./styles.css";
import Calendar from "react-calendar";

class App extends React.Component {
  state = {
    date: new Date(),
    classes: [
               { id: 1, name: "foo1" }, 
               { id: 2, name: "foo2" }
             ],
    displayClasses: false
  };

  onChange = date => this.setState({ date });
  displayClasses = () => {
    this.setState({ displayClasses: true });
  };
  render() {
    let classes = null;
    if (this.state.displayClasses) {
      classes = this.state.classes.map(cl => {
        return <li key={cl.id}>{cl.name}</li>;
      });
    }
    return (
      <div className="App">
        <Calendar
          onChange={this.onChange}
          value={this.state.date}
          onClickDay={this.displayClasses}
        />
        <br />
        <ul>{classes}</ul>
      </div>
    );
  }
}

export default App;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-14 03:43:56

onChange处理程序将用户单击的日期(作为日期对象)作为第一个参数提供给您。

您可以简单地检查日期是否是您希望有条件地显示某些内容的特定日期。例如,使用date.valueOf(),您可以获得以毫秒为单位的日期。

代码语言:javascript
复制
import React from "react";
import "./styles.css";
import Calendar from "react-calendar";

class App extends React.Component {
  state = {
    date: new Date(),
    classes: [{ id: 1, name: "foo1" }, { id: 2, name: "foo2" }],
    displayClasses: false,
  };

  onChange = date => {
    this.setState({ date });
  };

  displayClasses = () => {
    this.setState({ displayClasses: true });
  };

  render() {
    const { classes, date } = this.state;

    return (
      <div className="App">
        <Calendar
          onChange={this.onChange}
          value={this.state.date}
          onClickDay={this.displayClasses}
        />
        <br />
        <ul>
          {date.valueOf() === 1581548400000 &&
            classes.map(cl => {
              return <li key={cl.id}>{cl.name}</li>;
            })}
        </ul>
      </div>
    );
  }
}

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

https://stackoverflow.com/questions/60215137

复制
相关文章

相似问题

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