目前我正在这样做,但这不是react.js的方式,对不对? render()是否正确?有什么选择?

  var App = React.createClass({
    render: function() {
      if (this.state.touchMode === 2) {
          $('body').addClass('touchMode');
      }

      return (<div> etc /div>)
    }
  )}

最佳答案

最好将此逻辑保留在组件之外。事件发射器是抽象这一点的好方法。

var globalEvents = new EventEmitter();

var App = React.createClass({
  setTouchMode: function(touchMode){
     globalEvents.emit('touchModeChange', touchMode);
  },
  render: ...
});

// outside any react class
globalEvents.on('touchModeChange', function(mode){
  if (mode === 2) {
    $('body').addClass('touchMode');
  }
  else {
    $('body').removeClass('touchMode');
  }
});

如果确实需要将其作为一个或多个组件状态的一部分,则它们还可以监听该事件并在处理程序中更新其状态。

关于javascript - 使用React.js时,何时何地以及如何向document.body添加类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26694570/

10-12 07:11