我正在使用Ramda构建一个简单的应用程序。在Ramda调用两次Arg
我遇到了一个功能组合问题,我不确定如何解决这个问题,而不是创建一个看似不必要的荒唐功能。
该场景:
我有一个对象作为参数传递。有此对象的两个属性,以及一些其他的东西,是不相关的比其他的问题,我想不会改变它的状态:
{locCode :<string>, LocationList : [<Location>], someOtherParams : ... }
我有一个单一的ARG功能,它可以转换一个locCode的位置: fetchLocByCode
在这里,我需要的结果是采取了locCode
值,将它传递给fetchLocByCode
,结果追加LocationList
,并返回新LocationList
一个新的对象不接触物体上别的。
东西analagous到:
(Param)=>{
Param.LocationList.push(fetchLocByCode(Param.locCode));
return Param;
}
我已经结束了哪些写作要做到这一点似乎非常荒谬的,使我相信我做了可怕的错误的东西:
const locListLens = R.lens(R.prop('LocationList'),R.assoc('LocationList'))
const appendLocList = (i)=>R.compose(R.over(locListLens),R.append,fetchLocByCode,R.prop('locCode'))(i)(i)
该解决方案“作品“,但似乎我错过了一些基本的想法。
有人会提出一个更“典型”的方式来解决这种情况?
谢谢! 你的例子有助于提高这一点 - 为了保持“免费点”,忘记了直接访问某个属性仍然是完全可能的。 –