在ReactJS中Lodash / FP选择

时间:2019-06-07 09:15:37

标签: reactjs react-redux lodash

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

我也尝试将这种逻辑外包到一个函数中,在这里我只是称呼这两个选择,但没有用!

2 个答案:

答案 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>