>我有这个lodash/fp函数(pick(
<MyComponent initialValues={pick(
[
value1,
value2
], props.user
)}
它为我提供了价值 1 和 2 来自props.user
如何从另一个 props 中选择其他一些值(它们必须位于同一组件上[我正在使用 reactJS] 和相同的字段(?我尝试了&&
运算符,并进行了另一个选择,例如
<MyComponent initialValues={pick(
[
value1,
value2
], props.user
) &&
pick([value3], props.user.userMeta)}
我也尝试将此逻辑外包为一个函数,我只是调用两个选择,但它不起作用!
您可以将_.flow()
与_.over()
一起使用来生成一个函数,该函数获取 props,提取属性(_.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>
分散两个拾取的值:
<MyComponent
initialValues={{
...pick([value1, value2], props.user),
...pick([value3], props.user.userMeta),
}}
/>