gpt4 book ai didi

ramda.js - 更新几个属性

转载 作者:行者123 更新时间:2023-12-01 13:42:40 25 4
gpt4 key购买 nike

ramda 中,我如何一次更新多个属性?我能得到的最接近的是使用 R.evolve()evolve 要我使用转换函数修改属性。我想直接做。但是,R.assoc() 一次只能修改一个属性,我必须使用字符串指定该属性。

这就是我现在用 evolve 做的:

const STATE_INITIAL = {
isDisabled: true,
isLoading: false
};

R.evolve({
isDisabled: R.not,
isLoading: () => true // I don't want to set a value using a function
}, state)

在 JS 中,我会使用 object-spread 运算符,然后我会收到一个新对象:

{ ...state, isDisabled: !state.isDisabled, isLoading: true}

最佳答案

一种选择是使用镜头:

const isDisabled = R.lensProp('isDisabled');
const isLoading = R.lensProp('isLoading');

// toggle :: State -> State
const toggle = R.pipe(
R.over(isDisabled, R.not),
R.set(isLoading, true)
);

toggle({isDisabled: true, isLoading: false});
// => {isDisabled: false, isLoading: true}

参见 R.lensProp , R.over , 和 R.set .

关于ramda.js - 更新几个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38608860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com