Lodash/FP pick in reactjs



>我有这个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),
        }}
/>

最新更新