您认为使用React内联样式处理样式伪选择器的好方法是什么?有什么好处和缺点?
假设您有每个React组件的styles.js文件.您使用该样式文件设置组件的样式.但是你想对按钮(或其他)做悬停效果.
一种方法是拥有一个全局CSS文件并以这种方式处理样式伪选择器.这里,类'label-hover'来自全局CSS文件,styles.label来自组件样式文件.
<ControlLabel style={styles.label} className='label-hover'>
Email
</ControlLabel>
Run Code Online (Sandbox Code Playgroud)
另一种方法是根据某些条件(可能由州或其他任何东西触发)来设置组件的样式.这里,如果悬停状态为true,则使用styles.button和styles.buttonHover,否则只使用styles.button.
<section
style={(hovered !== true) ?
{styles.button} :
{...styles.button, ...styles.buttonHover }>
</section>
Run Code Online (Sandbox Code Playgroud)
这两种方法都让人觉得有点hacky.如果有人有更好的方法,我很想知道.谢谢!
Mic*_*per 29
我对任何想要使用React进行内联样式的人的建议也是使用Radium.
它支持:hover,:focus以及:active伪选择与你的一部分最小的努力
import Radium from 'radium'
const style = {
color: '#000000',
':hover': {
color: '#ffffff'
}
};
const MyComponent = () => {
return (
<section style={style}>
</section>
);
};
const MyStyledComponent = Radium(MyComponent);
Run Code Online (Sandbox Code Playgroud)
这最近得到了一些赞成,所以我觉得我应该更新它,因为我已经停止使用Radium了.我并不是说Radium对于伪造的选择器来说仍然不是很好而且很棒,只是它不是唯一的选择.
自从Radium问世以来,已有大量的css-in-js库值得考虑.我目前的选择是情绪,但我鼓励你尝试一些,找到最适合你的.
(来源)
| 归档时间: |
|
| 查看次数: |
22338 次 |
| 最近记录: |