目前我正在这样做,但这不是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/