【问题标题】:React do default parameters need to be in useCallback dependency array?React 默认参数需要在 useCallback 依赖数组中吗?
【发布时间】:2023-01-16 17:46:31
【问题描述】:

标题已经足够解释了,下面是这种情况的一个例子:

const handleDateChange = useCallback((startDate = defaultStartDate, endDate = defaultEndDate) => {
      // Do something
}, [defaultStartDate, defaultEndDate]);

defaultStartDatedefaultEndDate 是否需要包含在依赖项数组中(如我的示例)?

【问题讨论】:

    标签: javascript reactjs react-hooks


    【解决方案1】:

    是的,因为它们被函数引用,所以当值更改时,不能重用引用旧值的函数的先前版本。这就像在函数体中使用那些变量一样。

    你的handleDateChange有效地¹ 与此相同,这使得为什么您需要依赖项数组中的这些默认值变得更加明显:

    const handleDateChange = useCallback(
        (startDate, endDate) => {
            if (startDate === undefined) {
                startDate = defaultStartDate;
            }
            if (endDate === undefined) {
                endDate = defaultEndDate;
            }
            // Do something
        },
        [defaultStartDate, defaultEndDate]
    );
    

    ¹“有效”——有一个非常小的区别:使用默认参数值的函数的 length 属性是 0,而在我的重写中是 2。除此之外,它们的工作方式相同。

    【讨论】:

    • 好吧,我有这种感觉。谢谢!
    猜你喜欢
    • 2020-04-26
    • 2021-09-29
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多