【问题标题】:Lodash/FP pick in reactjsReactjs 中的 Lodash/FP 选择
【发布时间】:2019-06-07 09:15:37
【问题描述】:

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

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

它为我提供了来自props.user 的 value1 和两个 我如何从另一个道具中选择一些其他值(它们必须在 smae 组件上[我正在使用 reactJS] 和相同的字段)? 我尝试使用 &amp;&amp; 运算符并做出另一个选择,例如

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

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

【问题讨论】:

    标签: reactjs react-redux lodash


    【解决方案1】:

    您可以使用_.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)
    &lt;script src='https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)'&gt;&lt;/script&gt;

    【讨论】:

      【解决方案2】:

      传播两个选择的值:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 1970-01-01
        • 2018-04-24
        • 2020-11-29
        相关资源
        最近更新 更多