reactjs - 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)}
我还尝试将这个逻辑外包到一个函数中,我只是简单地调用两个选择,但它没有用!
解决方案
您可以使用_.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>
推荐阅读
- reactjs - 自定义 useForm 打字稿无法正常工作
- python - Matplotlib Funcanimation 在 Qt5Agg 后端调整窗口大小时恢复循环
- tailwind-css - 如何使用自定义类在 TailwindCSS 中为不同设备显示不同的图像?
- linux - 使用 curl 从 GitHub 运行 bash 脚本
- ios - 不显示角半径
- package - 如何使用其中使用其他包的 Svelte 组件库?
- powershell - 如何使用 powershell 在 IIS 配置编辑器上编辑某些配置?
- tensorflow - 如何将 tensorflow 模型转换为 TensorRT
- javascript - 顺序字符串替换调用在 Javascript 中未按预期工作
- python - spyder控制台中的Matplotlib后端错误?