反应:帮助了解特定的易用案例

时间:2019-11-19 17:33:22

标签: reactjs currying

  <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)}

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

这可能对上下文有帮助,但是在整个代码库中都调用myFunction。有时是通过evt,有时是手动。

1 个答案:

答案 0 :(得分:1)

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

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

如您所见,它比您的版本短一些并且可以使用。因此,您不必使用箭头函数就可以像调用它那样进行调用。 event再次通过。

有人认为这避免了在每个渲染中重新使用此功能,但这不是事实。