我正在从cssinjs.org/react.jss中试用React-Jss,这是我到目前为止所做的:

安装:

npm install --save react-jss


然后,我测试了该文件,在其中向页脚添加了一个Hover以便进行测试:

import React from 'react';
import injectSheet from 'react-jss';

const style = {
  Footer: {
    backgroundColor: '#000000',
  },
  '&:hover': {
      backgroundColor: '#ff0000',
    }
};

export class Footer extends React.Component {

  render() {
    return (
      <Footer>This is the footer</Footer>

    );
  }
}

export default injectSheet(style);


当我将鼠标悬停在页脚组件上时,我希望页脚变为红色,但没有任何反应。

我缺少某些语法或语法有问题吗?

最佳答案

上面的代码无法正常工作的原因有很多。除了JSS语法,您的React代码还有问题。

关于JSS样式声明,首先确保您了解在样式对象中声明的内容。样式对象的属性(在您的情况下为Footer,是您要定义的类名,因此应该全部使用小写字母。每个属性的值都是一个包含要应用的CSS样式的对象。如果要为给定类定义悬停样式,则可以在类的样式对象中声明这些样式,如下所示:

const style = {
  footer: {
    backgroundColor: '#000000',
    '&:hover': {
      backgroundColor: '#ff0000',
    }
  }
};


我怀疑您正在尝试遵循package's readme中“用法”下的第一个代码示例。这是遵循该方法的工作示例。

import React from 'react'
import injectSheet from 'react-jss'

const style = {
  footer: {
    backgroundColor: '#000000',
    '&:hover': {
      backgroundColor: '#ff0000'
    }
  }
}

const Footer = ({sheet}) => (
  <div className={sheet.classes.footer}>This is the footer</div>
)

export default injectSheet(style)(Footer)


下面是一个有效的示例,可以在您感兴趣的情况下利用ES6的优点。

import React, {PropTypes} from 'react';
import injectSheet from 'react-jss';

const style = {
  footer: {
    backgroundColor: '#000000',
    '&:hover': {
      backgroundColor: '#ff0000'
    }
  }
};

@injectSheet(style)
export default class Footer extends React.Component {
  static propTypes = {
    sheet: PropTypes.object.isRequired
  }

  render() {
    const {sheet} = this.props
    return (
      <div className={sheet.classes.footer}>This is the footer</div>
    );
  }
}

关于javascript - JavaScript react-jss悬停颜色不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43394062/

10-10 19:05