Javascript 试图修改函数';选择';函数,以便它返回对修改对象的拾取,以便将redux不可变映射状态返回给props
我正在尝试清理我的mapStateToProps,使用ramda,我可以使用r.pick通过传入我想要的属性来返回一个curried函数,如下所示:Javascript 试图修改函数';选择';函数,以便它返回对修改对象的拾取,以便将redux不可变映射状态返回给props,javascript,functional-programming,redux,immutability,currying,Javascript,Functional Programming,Redux,Immutability,Currying,我正在尝试清理我的mapStateToProps,使用ramda,我可以使用r.pick通过传入我想要的属性来返回一个curried函数,如下所示: const mapStateToProps = R.pick(['board', 'nextToken']) 然后Redux将状态传递给returns函数 我想做的是首先修改状态,因为我的状态是一个不可变的映射,所以我需要通过pick my state cast as plan js 我可以用以下方法做到这一点,但我相信,从功能上来说,有一种更干
const mapStateToProps = R.pick(['board', 'nextToken'])
然后Redux将状态传递给returns函数
我想做的是首先修改状态,因为我的状态是一个不可变的映射,所以我需要通过pick my state cast as plan js
我可以用以下方法做到这一点,但我相信,从功能上来说,有一种更干净的方法可以做到这一点。这是任何人都能看到的简单的东西吗
import {Map} from 'immutable'
import R from 'ramda'
const immutable_state = Map({
name: 'alice',
age: 30
})
const pick_from_immutable = (attrs, obj) =>
// accepts a list of attrs
// returns a function that accepts an immutable and returns its attrs defined by attrs, also be nice to just return the value if called with an immutable 2nd arg
obj ?
R.pick(attrs, obj.toJS()) :
(imm) => R.pick(attrs, imm.toJS())
const pick_age_from_immutable = pick_from_immutable(['age'])
console.log(pick_age_from_immutable(immutable_state)) // -> { age: 30 }
const mapStateToProps = pick_age_from_immutable
我更喜欢使用Immutablejs函数来处理这类事情。它可以很好地处理嵌套项。但我可以看到一个用例,如果我在多个组件中选择年龄(或某些属性),那么我可能会为它创建一个实用函数 例如:
var a = Map({
b: Map({
c: 10
})
})
// Get value of c in nested a object. Set not found value to null.
var valueOfC = a.getIn(['b', 'c'], null)
我更喜欢使用Immutablejs函数来处理这类事情。它可以很好地处理嵌套项。但我可以看到一个用例,如果我在多个组件中选择年龄(或某些属性),那么我可能会为它创建一个实用函数 例如:
var a = Map({
b: Map({
c: 10
})
})
// Get value of c in nested a object. Set not found value to null.
var valueOfC = a.getIn(['b', 'c'], null)