Warm tip: This article is reproduced from serverfault.com, please click

arrays-React Native JavaScript合并多主题参数

(arrays - React native javascript merge multi theme parameters)

发布于 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

        },
      }),
      {},
    ),
  })
Questioner
Paul
Viewed
11
emi 2020-11-28 18:10:01

你可以Object.assign用来合并从的themes映射的数组key

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