我有这个lodash / fp函数(选择)
<MyComponent initialValues={pick(
[
value1,
value2
], props.user
)}
它为我提供了props.user
中的值1和值2
我如何从其他道具中选取其他一些值(它们必须在smae组件上[我正在使用reactJS]和同一字段)?
我尝试过使用&&
运算符,并再次选择
<MyComponent initialValues={pick(
[
value1,
value2
], props.user
) &&
pick([value3], props.user.userMeta)}
我也尝试将这种逻辑外包到一个函数中,在这里我只是称呼这两个选择,但没有用!
答案 0 :(得分:0)
传播两个选择的值:
<MyComponent
initialValues={{
...pick([value1, value2], props.user),
...pick([value3], props.user.userMeta),
}}
/>
答案 1 :(得分:0)
您可以将_.flow()
与_.over()
一起使用,以生成需要道具的函数,提取属性(_.get()
和_.pick()
),然后将它们合并在一起:>
const { flow, over, get, pick, mergeAll } = _
const createGetInitValues = (userValues, userMetaValues) => flow(
over([
flow(get('user'), pick(userValues)),
flow(get('user.userMeta'), pick(userMetaValues)),
]),
mergeAll
)
const props = { user: { a: 1, b: 2, userMeta:{ c: 3 }}}
const getInitValues = createGetInitValues(['a', 'b'], ['c'])
const result = getInitValues(props)
console.log(result)
<script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'></script>