Lodash / FP выбирают в реакции - PullRequest
0 голосов
/ 07 июня 2019

У меня есть эта функция lodash / fp (pick)

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

Она предоставляет мне value1 и два из props.user Как я могу выбрать некоторые другие значения из других реквизитов (они должны быть на smaeкомпонент [я использую реагироватьJS] и то же поле)?Я попробовал с оператором && и сделал еще один выбор, например

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

Также я попытался передать эту логику в функцию, где я просто вызываю два пика, но это не сработало!

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

Вы можете использовать _.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>
0 голосов
/ 07 июня 2019

Распространение обоих выбранных значений:

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