【问题标题】:React native javascript merge multi theme parameters [closed]反应本机javascript合并多主题参数[关闭]
【发布时间】:2020-11-27 16:13:42
【问题描述】:

我有以下代码可以让你merge一个主题,我想做的是能够传递未定义数量的主题。

我该怎么办?

代码:

  const mergeTheme = (baseTheme, theme, darkTheme) => ({
    ...Object.entries(baseTheme).reduce(
      (acc, [key, value]) => ({
        ...acc,
        [key]: {
          ...value,
          ...(theme[key] || {}),
          ...(darkTheme[key] || {}),
        },
      }),
      {},
    ),
  })

如我所愿,输入参数:

  const mergeTheme = (baseTheme, ...theme) => ({
    ...Object.entries(baseTheme).reduce(
      (acc, [key, value]) => ({
        ...acc,
        [key]: {
          ...value,

          <- Here

        },
      }),
      {},
    ),
  })

【问题讨论】:

  • 有2个函数同名mergeTheme。每一个做什么?为什么他们有相同的名字?
  • 第二个与第一个同名的函数以及我希望该函数如何使用输入参数,但我卡在了这里所说的部分。我以为你明白了。
  • 编辑您的问题,澄清这一点(例如,在文本中或作为代码中的注释或将代码分成 2 个块),以便我可以取消投票。

标签: javascript arrays react-native merge javascript-objects


【解决方案1】:

您可以使用Object.assign 合并从themeskey 映射的数组:

const mergeTheme = (baseTheme, ...themes) => ({
  ...Object.entries(baseTheme).reduce(
    (acc, [key, value]) => ({
      ...acc,
      [key]: {
        ...value,
        ...Object.assign({}, ...(themes.map(theme => theme[key])))
      },
    }),
    {},
  ),
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2022-10-16
    相关资源
    最近更新 更多