Я создаю простое приложение, используя Ramda.Звонок Arg в Рамде
У меня возникла проблема с функциональным составом, что я не совсем уверен, как обращаться без создания того, что кажется ненужной абсурдной функцией.
Сценарий:
У меня есть объект передается в качестве параметра. Есть два атрибута на этом объекте, а также некоторые другие вещи, которые не относятся к проблеме, за исключением, что я хотел бы, чтобы не изменить его состояние:
{locCode :<string>, LocationList : [<Location>], someOtherParams : ... }
У меня есть одна функция ARG, которая может преобразовать locCode к месту: fetchLocByCode
Мой желаемый результат здесь будет принимать значение locCode
, передать его fetchLocByCode
, добавьте LocationList
с результатом, и возвращает новый объект с новым LocationList
, не касаясь ничего другого на объекте ,
Что-то, аналогичными:
(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)
Это решение " работает ", но кажется, что я пропустил какую-то фундаментальную идею.
Может ли кто-нибудь пожелать представить более «канонический» способ решения этого сценария?
Спасибо! Ваши примеры помогут сделать это более разумным - Я действительно терялся, пытаясь остаться «свободным» и забыв, что по-прежнему можно просто напрямую получить доступ к собственности. –