首页 > 代码库 > [Ramda] Change Object Properties with Ramda Lenses
[Ramda] Change Object Properties with Ramda Lenses
In this lesson we‘ll learn the basics of using lenses in Ramda and see how they enable you to focus changes on specific properties of an object while keeping your data immutable.
what ‘R.lens‘ do is able to get or set prop value but keep the object immutable.
Normally when you two ways to use lens:
1. set up lens: ‘lens‘ + ‘prop‘ + ‘assoc‘;
After set up you can either get value by using ‘R.view‘;
Or change a prop by using ‘R.set‘ or ‘R.over‘.
2. Using ‘lens‘ + ‘prop‘ + ‘assoc‘ is a little bit work to do, there is short syntax to do the same thing: ‘R.lensProp‘.
const R = require(‘ramda‘);const {view, lens, assoc, prop, set, over, lensProp, toUpper} = R;const person = { firstName: ‘Fred‘, lastName: ‘Filntstore‘};/** What lens does is modify prop value for a given object* and keep data immutable.* */const firstNameLens = lens( prop(‘firstName‘), assoc(‘firstName‘));const viewFirstName = view(firstNameLens);// const result = viewFirstName(person); // Fred/** Using R.set **/const setFirstName = set(firstNameLens);const updateFirstName = setFirstName(‘Zhentian‘);// const result = updateFirstName(person); // { firstName: ‘Zhentian‘, lastName: ‘Filntstore‘ }/** Using R.over instead of set **/const result = over(firstNameLens, toUpper, person);/** lensProp instead of prop + assoc **/const lastNameLens = lensProp(‘lastName‘);const result2 = over(lastNameLens, toUpper, person); // { firstName: ‘Fred‘, lastName: ‘FILNTSTORE‘ }console.log(result);console.log(result2);
[Ramda] Change Object Properties with Ramda Lenses
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。