【问题标题】:Are these two JavaScript statements equivalent under functional programming rules in React这两个 JavaScript 语句在 React 中的函数式编程规则下是否等效
【发布时间】:2021-03-04 13:39:07
【问题描述】:

是否有一些函数式编程规则表明这两件事是相同的?

也就是说,我在 React 程序中将函数作为属性传递,并且我使用的是第二个版本,并传入了第一个参数。出于好奇,我只传递函数,我的应用程序仍然可以工作但我很困惑为什么。

(要特别清楚,onFavoriteToggle 是一个函数)

  <SpeakerFavorite
    favorite={favorite}
    onFavoriteToggle={onFavoriteToggle}
  />

相比

  <SpeakerFavorite
      favorite={favorite}
      onFavoriteToggle={(fun) => {onFavoriteToggle(fun)}}
  />
 

【问题讨论】:

标签: javascript reactjs


【解决方案1】:
(fun) => {onFavoriteToggle(fun)}

是一个“代理”函数,它简单地使用它接收的相同参数调用另一个函数。在这种情况下,毫无用处,在极端情况下实际上可能会损害您的应用性能。

但是,如果 SpeakerFavorite 调用这个作为 onFavoriteToggle 属性传递的“代理”函数,而不是一个,而是两个参数,第二个参数现在会丢失,因为“代理”函数只接收一个参数。这可能会导致难以调试的错误。

如果您不需要做任何其他事情,只需传递函数,中间不要“代理”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2018-06-02
    • 2012-09-18
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多