[英]Trying to modify a functional 'pick' function so that it returns a pick on a modified object for redux immutable map state to props
我正在尝试清理我的mapStateToProps,使用ramda我可以使用r.pick通过传入我想要的attrs来返回一个curried函数:
const mapStateToProps = R.pick(['board', 'nextToken'])
然后Redux将状态传递给返回函数。
我想要做的是首先修改状态,因为我的状态是一个不可变的映射,所以我需要通过选择我的状态强制转换为计划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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.