假设我们有 2 个不同的函数(或更多),它们接受来自某个执行程序的一个参数并返回结果对象。让我举个例子:
const style_1 = theme => ({
header : {
color : theme.primary
}
})
const style_2 = theme => ({
header : {
backgroundColor : theme.secondary,
color : "red"
}
})
我想执行它们并将结果对象合并为一个!在对象的情况下,这是一项微不足道的任务,例如。
const style_1 = {
header : {
color : theme.primary
}
}
const style_2 = {
header : {
backgroundColor : theme.secondary,
color : "red"
}
}
const res = {...style_1, ...style_2}
预期的结果是
{
header :
{
backgroundColor : "black",
color : "red"
}
}
但是在功能的情况下,它变得有点烦人。
所以问题是。是否有可能实现我想要的?(通过 Lodash 或使用其他东西)
我决定我可能会创造类似的东西
const style_1 = theme => ({
header : {
color : theme.secondary
backgroundColor : "black"
},
footer : {
color : "purple"
}
})
const style_2 = (theme, extendStyles) => {
const extendStyles = extendStyles(theme);
return {
header : {
color : theme.primary,
...extendsStyles.header
},
...extendStyles
}
}
但是这个解决方案有点丑陋,因为我应该以可能被覆盖的每一种风格来照顾这个东西。也许存在一些实用程序/助手可以帮助以更好的方式处理它?
PS 不要问我这个有趣的要求,它只是 MaterilUI 的withStyle功能,我想知道如何正确处理它。
谢谢你的帮助。