首页 > 解决方案 > Reactjs 中的 Lodash/FP 选择

问题描述

我有这个 lodash/fp 函数(pick)

<MyComponent initialValues={pick(
        [
         value1,
         value2
        ], props.user
    )}

它为我提供了 value1 和两个 fromprops.user 我如何从另一个道具中选择一些其他值(它们必须在 smae 组件上[我正在使用 reactJS] 和相同的字段)?我试着和&&操作员一起做另一个选择

<MyComponent initialValues={pick(
        [
         value1,
         value2
        ], props.user
      ) && 
      pick([value3], props.user.userMeta)}

我还尝试将这个逻辑外包到一个函数中,我只是简单地调用两个选择,但它没有用!

标签: reactjsreact-reduxlodash

解决方案


您可以使用_.flow()with_.over()生成一个函数,该函数接受 props,提取属性 ( _.get()and _.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>


推荐阅读