当前位置: 首页 > 知识库问答 >
问题:

如果startdate设置在prevstartdate之前,如何使用react将enddate设置为null?

苏俊友
2023-03-14

我想允许用户选择日历上的开始和结束日期。我使用的是反应日期。

我希望它像下面这样工作

初始开始日期和结束日期将为空。当用户选择开始日期(如10月10日)时,第一次单击时,enddate也设置为startdate(10月10日),并且开始日期(10月10日)之前的日期和从开始日期算起6周后的日期将被禁用,现在当用户选择enddate(如10月13日)时,enddate设置为13th oct,并且在选择结束日期后将启用禁用的日期。

现在,当用户单击10月15日时,这被设置为开始日期n结束日期,开始日期之前的日期10月15日和开始日期后6周的日期被禁用以供选择,当用户单击10月17日作为设置为结束日期的结束日期时,禁用的日期将在选择结束日期后启用。上述工作。但用户执行以下操作,它无法按预期工作,我需要对此进行修复。用户将开始日期设置为10月15日,结束日期设置为10月17日,现在选择开始日期10月13日。

预期:在这一点上,我希望它将开始和结束日期设置为10月13日,并禁用10月13日之前的日期和10月13日起6周之后的日期也被禁用并等待用户输入结束日期。

结果,但它将10月13日设置为开始日期,10月17日设置为结束日期。

基本上,当用户设置了一些开始和结束日期并选择了开始日期之前的日期时,结束日期应设置为新的开始日期,而新的开始日期之前的日期和从新的开始日期起6周后的日期应被禁用。用户单击startdate之后的另一个日期应设置为结束日期。

下面是我的代码的工作示例

https://codesandbox.io/s/react-dates-forked-skrj2?file=/src/index.js

谁能帮我一下吗。谢谢

共有2个答案

司徒杜吟
2023-03-14

如果我正确理解了你想要什么,你基本上有两个条件:

  1. 开始日期和结束日期都已设置,并且相等。在这种情况下,您知道您实际上只选择了开始日期,应该对可用范围进行限制。选择有效日期后,仅设置结束日期

下面是一个如何实现它的例子:https://codesandbox.io/s/react-dates-forked-9rj7q?file=/src/index.js

松铭
2023-03-14

我认为您可以简单地使用useEffects来完成。为此您需要两件事:

  1. 第一个轨迹开始日期值如果值已从开始日期更改,则表示您再次选择了开始日期,您可以为其创建自定义上一个挂钩:
  // The ref object is a generic container whose current property is mutable ...
  // ... and can hold any value, similar to an instance property on a class
  const ref = useRef();
  
  // Store current value in ref
  useEffect(() => {
    ref.current = value;
  }, [value]); // Only re-run if value changes
  
  // Return previous value (happens before update in useEffect above)
  return ref.current;
}

const prevDate = usePrevious(startDate);

  React.useEffect(() => {
    if (prevDate && !moment(prevDate).isSame(startDate)) {
      setEndDate(startDate);
    }
  }, [startDate, endDate, prevDate]);

您可以在此处找到演示:https://codesandbox.io/s/react-dates-forked-xz0pk?file=/src/index.js:2469-2668

 类似资料:
  • 问题内容: 我想在Elasticsearch(Java客户端)中使用以下过滤器: 如果存在startDate并降低到现在 如果endDate存在且现在更大 我已经有以下内容,但没有显示没有startDate或endDate的内容: mysql中的查询如下所示: 那么该怎么做呢? 我尝试从答案中追随,但仍然没有显示没有startDate或endDate的人: 问题答案: 您需要这样的查询:

  • 问题内容: 使用Zend_Db执行UPDATE和INSERT查询时,我经常需要设置等于NULL的值(不是”)。但是,Zend_Db :: insert()和Zend_Db :: update()的默认行为似乎是将空值转换为空字符串(’‘)并照此放入数据库。 有谁知道如果php中的值为空,则实际上强制将NULL值放入字段的方法吗? 问题答案: 尝试将受影响的字段设置为:

  • 问题内容: 如何在Java中使用org.json.JSONObject将值设置为null?我肯定可以通过使用isNull来读取值是否为null,但是当我将其设置为null时,它只会忽略我: 问题答案: 尝试设置而不是: 用于明确定义没有值的名称的哨兵值。与null不同,具有以下值的名称: 显示在names()数组中 出现在keys()迭代器中 为has(String)返回true 不要抛出get(

  • 问题内容: 我尝试过这种方式,但是它没有改变吗? 问题答案: 最好使用.png文件;.ico是Windows特定的。最好不要使用文件,而是使用类资源(可以包装在应用程序的jar中)。 尽管您甚至可能考虑将setIconImages用于多种尺寸的图标。

  • 我使用的是Spring Kafka 2.2.7,我已经将配置为,并使用消费消息,一切都按预期运行。 我想添加一个来记录所有消耗的消息,但发现很难配置它。留档指出可以在容器上设置RecordInterceptor,但我不确定如何获取容器的实例。 从版本2.2.7开始,您可以向侦听器容器添加RecordInterceptor;它将在调用允许检查或修改记录的侦听器之前被调用。 我查阅了Spring文档,

  • 问题内容: 当我卷曲东西时,它可以正常工作: 我如何使它与axios一起正常工作?如果这很重要,我正在使用react: 由于某些原因,这不起作用。 问题答案: 这是我如何使用axios在react中上传文件 资源