微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反应日期时间;我正在使用二合一组件,我如何分辨哪个是哪个?

如何解决反应日期时间;我正在使用二合一组件,我如何分辨哪个是哪个?

这是一个关于 react-datetime 的奇怪问题:为什么回调不允许返回“名称”?

我在日历调度程序上将 Daytime 用于“开始”和“结束”时间两次。但我想使用单个“onChange”事件来更新状态。问题是:Datetime onChange 只返回时间,它不返回名称或 ID 或任何方式让我识别哪个 Datetime 组件正在发送 onChange。

这是render()代码

<CardSubtitle>Start Date:
  <Datetime 
    value = {this.state.start}
    onChange={this.handleChange}
    className = "dateTimeModule"
  />
</CardSubtitle>

<CardSubtitle>End Date:
  <Datetime 
    value = {this.state.end}
    onChange={this.handleChange}
    className = "dateTimeModule"
  />
</CardSubtitle>

这是我想使用的逻辑:

handleChange = (e) => {

  this.setState({
    bodyEdit: true,[e.target.name]:e.target.value
  })
};

但是“e”只包含日期对象。 Datetime 似乎不支持名称”返回?

我很困惑,这似乎是一个明显的错过。我如何区分这些?我需要为每个函数编写单独的函数吗?

正在考虑这样做:

handleStartChange = (e) => {
  this.setState({
    startDate: e
  })
};

handleEndChange = (e) => {
  this.setState({
    endDate: e
  })
};

但这似乎是不必要的代码

解决方法

您可以做的是将附加参数传递给您的函数:

        <CardSubtitle>Start Date:
          <Datetime 
            value = {this.state.start}
            onChange={(e) => this.handleChange(e,"start")}
            className = "dateTimeModule"
          />
        </CardSubtitle>

        <CardSubtitle>End Date:
          <Datetime 
            value = {this.state.end}
            onChange={(e) => this.handleChange(e,"end")}
            className = "dateTimeModule"
          />
        </CardSubtitle>

并在您的 handleChange(e,name) 函数中重用此参数:

  handleChange = (e,name) => {
    this.setState({
      bodyEdit: true,[name]:e
    })
  };

还要确保您用作“e”的库返回的是什么,它似乎不是一个经典事件,而是一个时刻对象:

日期更改时触发回调。回调接收到 选定的矩对象作为唯一参数,如果输入中的日期是 有效的。如果输入中的日期无效,则回调接收 输入的值(一个字符串)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。