React/Flux' 存储应该是 GUI 整个状态的快照吗?



简短的问题:看起来应用程序的状态可以从 React/Flux 存储中完全序列化。我已经在输入值和其他东西中看到了这一点,但是动画或悬停效果是什么?我应该使用经典的:hover CSS 选择器来实现悬停效果,还是应该使用 mouseEnter 和 -leave 事件并将悬停状态保存在我的商店中?

如果你的悬停效果很小,比如光标上的指针等,我会主要使用 CSS。如果你想做更大的DOM操作,我会使用React。不应使用存储来确定组件的状态,它应仅在发生操作后将数据分发到组件。这意味着组件应该知道它当前处于哪种状态,然后确定应该发生什么。这是一个带有"哑"组件的小示例,该组件除了自己的状态外,没有任何类型的数据更新。

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>
   );
 }
});

您可以轻松地在此组件中发送数据并进行其他数据操作,以使其成为更智能的组件。

相关内容

最新更新