如何在ReactJs中组合样式属性

时间:2018-10-30 07:51:03

标签: javascript reactjs

我有此代码:

const styles = theme => (
  console.log('theme',theme), {

    layoutHeader : {
      height: 320,
      minHeight: 320,
      background: "url('/assets/images/backgrounds/dark-material-bg.jpg') no-repeat",
      backgroundSize: 'cover',
      color: '#fff',
      [theme.breakpoints.down('md')]: {
        height: 240,
        minHeight: 240
      }
    }
  }
);

class ProfilePage extends Component {
  render() {
    const {classes} = this.props;
    return (
      <PageSimple
        classes={{header : classes.layoutHeader}}
    )
  }
}

我想在页面加载后更改背景。

我该怎么办,例如这样的事情:

const newStyle = styles([
  classes.layoutHeader,
  {background: this.props.backgroundimageurl}
]);

classes={{ header : newStyle }}

这可能吗?我试过了,但是没有用,您能帮忙吗?

3 个答案:

答案 0 :(得分:1)

我认为您正在寻找类似Object.assign的东西。这里是JSX的一个小例子:

const layoutHeader = {
  ...
}
const showStyle = {
  background: 'red'
}
const bineStyle = Object.assign(layoutHeader,showStyle)

答案 1 :(得分:0)

如果要将对象作为样式传递给组件,则只需要使用style属性,而不是将其用作类

<Component style={this.styleObject} />

答案 2 :(得分:0)

Spread operators的ES似乎对我来说是一种更清洁的方法。

const layoutHeader = {
  ...
}
const showStyle = {
  background: 'red'
}
const combo = { ...hiddenStyle, ...showStyle }

注意:按键将按序列顺序覆盖(例如,最后一次写入获胜)