【问题标题】:react: helping to understand specific currying use case反应:帮助理解特定的柯里化用例
【发布时间】:2019-11-19 17:33:22
【问题描述】:
  <Select 
    onChange={evt => myFunction('KEY', ['ARRAY', 'OF', 'VALUES'])(evt)}

...

 const myFunction = (key, funValues) => {

      return (evt: React.ChangeEvent<HTMLSelectElement>) => {

        const { values } = evt.target;
         if (funValues.find( some condition) ){
           callAPI(key, funValues);
         }
         else{
           callAPI(key, values);
        }
      };
    };

我会把它简单地写成

 onChange={evt => myFunction('KEY', ['ARRAY', 'OF', 'VALUES'], evt)}

我真的不明白在这里应用柯里化的逻辑是什么,以及它将如何产生 a) 这个操作更好 和/或 b) 带来更广泛的好处

也许这有助于上下文,但在整个代码库中都会调用myFunction。有时通过 evt,有时手动。

【问题讨论】:

标签: reactjs currying


【解决方案1】:

创建一个柯里化函数(我猜)是一种在回调处理程序中避免箭头函数的误解。为了这种误解,有些人将此函数定义为咖喱函数并使用如下:

onChange={myFunction('KEY', ['ARRAY', 'OF', 'VALUES'])}

如您所见,这比您的版本短并且有效。因此,您不必像您一样使用箭头函数并调用它。 event 再次通过。

有些人认为这样可以避免在每次渲染中重新创建此函数,但事实并非如此。

【讨论】:

  • 这就是在这种情况下似乎正在发生的事情。感谢您的洞察力
猜你喜欢
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
相关资源
最近更新 更多