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

与getDerivedStateFromProps中以前的道具进行比较

曹嘉许
2023-03-14

假设一个组件有一个prop'name'和状态'elapse'。

new Component(name) => "Hi {name}. It's been {elapse} seconds"

当道具{name}更改时,{elapse}应重置为0。

嗨,鲍勃。已经0秒了

>

  • GetDerivedStateFromProps不能使用,因为{elapse}不是{name}的纯函数,而且我不能返回0,因为重新呈现时可能会调用它。

    GetDerivedStateFromProps如何替换有状态组件中的ComponentWillReceiveProps

  • 共有1个答案

    慕容晔
    2023-03-14

    如果你环顾四周,你会发现你不是第一个有这个问题的人--它在github1 2 3和hackernews的一个帖子中被彻底讨论过。推荐的解决方案是在状态中镜像您需要检查的道具:

    state = { name: "", lastTime: Date.now() }
    
    static getDerivedStateFromProps(nextProps, prevState) {
        if (nextProps.name !== prevState.name) {
            return { name: nextProps.name, lastTime: Date.now() };
        }
        return null;
    }
    
     类似资料:
    • 问题内容: 我有一个名为team的表,如下所示:我只是在第三列中添加了row_number 当16出现时,则以1开头,而16依次出现,则一一加。结果就像 帮我得到结果。 问题答案: 您可以使用以下查询: 字段标识具有相同值的连续记录的切片(也称为孤岛)。外部查询用于枚举属于切片的每个记录。属于其他切片的记录被分配了值。 演示在这里

    • 问题内容: 如何将SQL Server日期列与当前星期进行比较? 例如: 问题答案: 您可以将日期转换为星期数,然后将其与当前日期的星期数进行比较。同样,您还需要比较年份,以免获得去年的星期数。

    • 我创建了一个,当调用变量为ISE时,它会读取相关数据的表。但是,如果我尝试将与另一个对象进行比较,无法正确读取。我想告诉脚本,如果现有CSV中的任何行与匹配,则不会将数据导出到CSV,换句话说,跳过CSV文件中的重复行。CSV可能有也可能没有多行。

    • 我一直在寻找这个,但没有找到一个解决方案,符合我的需要。我需要获取NSDate类型的日期,而不是字符串,其中包括特定时区的当前时间,以便稍后对其进行比较,查看该时间是否介于一个范围之间。 例如,我需要看看商店是否在营业。我在东部时区,现在是晚上11:30,所以我看到一个商店的时间表,它在11点关门,但商店是在PST的,这意味着现在是晚上10点,在那个地区和剧照开门。因此,我需要将我的时区更改为商店

    • 我对OffsetDateTime的用法非常陌生,我正在尝试将OffsetDateTime字符串与OffsetDateTime进行比较。以这种方式在java中使用now(), 但我正在学习java。时间总体安排所有3种情况下的DateTimeParseException。 然而,如果我将2个OffsetDateTime字符串与CompareTo方法进行比较,它的工作就很好了。 有没有人能在这方面给我

    • 我有一个应用程序,从一个api接收一些数据,我想比较它们,但不知道如何做。 来自api的日期在不同的模板中,加上它的字符串,所以我无法比较。 如果收到的日期早于当前日期,我想显示一条错误消息。 以下是api日期的来源(我已经在控制台上打印出来): 这是日期时间。现在在颤振: 有没有办法比较它们?