Javascript React.js&;Radium.js-使React样式在本质上是全局的,但受制于用户输入?
我刚刚开始学习镭,所以请原谅我的无知。如果说Javascript React.js&;Radium.js-使React样式在本质上是全局的,但受制于用户输入?,javascript,reactjs,Javascript,Reactjs,我刚刚开始学习镭,所以请原谅我的无知。如果说CSS文件有什么了不起的地方的话,那就是在主应用程序组件中链接到它们一次,然后忘记它们,它们会被缓存,可以简单地在所有组件中使用 但是,您无法连接它们和任何用户输入之间的任何交互 下面是一个简单的片段,我根据上提供的示例玩过: import React, { Component, PropTypes } from 'react'; import Radium from 'radium'; const squareStyles = { both:
CSS文件有什么了不起的地方的话,那就是在主应用程序组件中链接到它们一次,然后忘记它们,它们会被缓存,可以简单地在所有组件中使用
但是,您无法连接它们和任何用户输入之间的任何交互
下面是一个简单的片段,我根据上提供的示例玩过:
import React, { Component, PropTypes } from 'react';
import Radium from 'radium';
const squareStyles = {
both: {
background: 'black',
border: 'solid 1px white',
float: 'left',
height: 100,
width: 100
},
one: {
':hover': {
background: 'green'
}
},
two: {
':hover': {
background: 'red'
}
}
};
镭
导出默认类应用程序扩展组件{
......................
render(){
//最终结果是黄色的
squareStyles.one[':悬停].背景='黄色';
返回(
);
}
}
尽管squareStyles.one[':hover'].background已预设为绿色,但用户输入将其改为黄色。太好了
但是如果我需要几个组件中的squareStyles呢?我不希望重复的代码在每个样式中定义样式。
问题:
更新:
constyles=require('../styles/styles')代码>代替本地squareStyles对象
@Radium
export default class APP extends Component {
......................
render() {
// final result is yellow
squareStyles.one[':hover'].background = 'yellow';
return (
<div>
<div key="one" style={ [squareStyles.both, squareStyles.one] } />
<div key="two" style={ [squareStyles.both, squareStyles.two] } />
<div style={ { clear: 'both' } }/>
</div>
);
}
}