简短问题:看起来应用程序的状态可以完全从React / Flux商店序列化。我已经看到了输入值和其他东西,但动画或悬停效果是什么?我应该使用经典的:hover
CSS选择器来悬停效果,还是应该使用mouseenter和-leave事件并在我的商店中保存悬停状态?
答案 0 :(得分:7)
如果您的悬停效果很小,比如光标上的指针等,我会主要使用CSS。
如果你想做更大的DOM操作,我会使用React
。
您不应该使用存储来确定组件的状态,它应该只在发生操作后将数据分发到组件。
这意味着组件应该知道它当前处于哪种状态,然后确定应该发生什么。这是一个带有" dumb"的小例子。没有任何数据更新的组件,除了它自己的状态。
var SmallTooltip = React.createClass({
getInitialState: function () {
return {
showTooltip: false
};
},
onMouseEnter: function () {
this.setState({
showTooltip: true
});
},
onMouseLeave: function () {
this.setState({
showTooltip: false
});
},
render: function () {
var toolTipClass = !this.state.showTooltip ? 'tooltip hidden' : 'tooltip';
return (
<span onMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} className='someCoolWrapperClass'>
<span className={toolTipClass}>
This is shown when you hover over the span
</span>
</span>
);
}
});
您可以轻松地在此组件中发送数据并执行其他数据操作,以使其成为更智能的组件。