首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加特定日期时使用React.useState中断的数组排序

添加特定日期时使用React.useState中断的数组排序
EN

Stack Overflow用户
提问于 2022-02-04 07:36:38
回答 1查看 193关注 0票数 0

我试图在列表中添加日期,并在每次添加新日期时对该列表进行排序。一切都很好,插入每个新数据时都会使用列表,但如果我开始添加此日期13/02/22,重新排序似乎已经停止,新的日期插入将相互叠加/最新插入将是最后一次插入,而不管其实际日期如何。

以下是我在列表中添加日期时的代码。这里的useEffect是我的排序逻辑。如您所见,我通过调用setAddedOpens (即React.useState )对我的日期列表进行排序。

代码语言:javascript
复制
const [addedOpens, setAddedOpens] = React.useState(defaultOpens);
 const [toggleSort, setToggleSort] = React.useState(false);

      const _addOpens = () => {
        for (let week = 0; week <= repeatWeeks; week++) {
          const OFI = new Date(getValues('OFIdate'));
    
          setAddedOpens((prevOpens) => [
            ...prevOpens,
            {
              ofi: format(OFI.setDate(OFI.getDate() + 7 * week), 'dd/MM/yyyy'),
              start: format(getValues('startTime'), 'hh:mm a'),
              end: format(getValues('endTime'), 'hh:mm a')
            }
          ]);
        }
    
        setToggleSort((toggle) => !toggle);
      };
    
      React.useEffect(() => {
        setAddedOpens([...addedOpens].sort((a, b) => new Date(a.ofi) - new Date(b.ofi)));
      }, [toggleSort]);

这里不介意我代码的其他部分。因为我也有一个功能,您可以批量添加日期。但同时,假设每次单击ADD时只添加一个日期,而repeatWeeks状态始终为0。

我不太确定到底是什么问题。也许我在逻辑上遗漏了什么?或者这与日期或日期格式有关?为什么在我添加日期13/02/22之后排序会出错呢?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-04 07:57:42

尝试向对象添加一个附加属性,我们称之为ofi_sorting,它以yyyy-MM-dd格式存储日期,并使用该字段对值进行排序:

代码语言:javascript
复制
    setAddedOpens((prevOpens) => [
      ...prevOpens,
      {
        ofi: format(OFI.setDate(OFI.getDate() + 7 * week), 'dd/MM/yyyy'),
        ofi_sorting: format(OFI.setDate(OFI.getDate() + 7 * week), 'yyyy-MM-dd'),
        start: format(getValues('startTime'), 'hh:mm a'),
        end: format(getValues('endTime'), 'hh:mm a'),
      },
    ]);
  }

  setToggleSort((toggle) => !toggle);
};

React.useEffect(() => {
  setAddedOpens(
    [...addedOpens].sort((a, b) => a.ofi_sorting - b.ofi_sorting)
  );
}, [toggleSort]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70982873

复制
相关文章

相似问题

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