Javascript 我应该如何处理reactJS dom操纵(例如滚动操纵)

Javascript 我应该如何处理reactJS dom操纵(例如滚动操纵),javascript,reactjs,Javascript,Reactjs,假设我想做一些非常简单的事情——在一个卷轴上将标题更改为fixed,直接操作dom可以吗?如果不是的话,我应该如何攻击它 例如: componentDidMount: function() { $('.content').bind('scroll',function(){ if ( $(this).scrollTop() > 85) { $('#x').addClass('fixedTitle'); } else {

假设我想做一些非常简单的事情——在一个卷轴上将标题更改为fixed,直接操作dom可以吗?如果不是的话,我应该如何攻击它

例如:

componentDidMount: function() {
    $('.content').bind('scroll',function(){
        if ( $(this).scrollTop() > 85) {
            $('#x').addClass('fixedTitle');

        } else {
            $('#x').removeClass('fixedTitle');

        }
    });
},
componentWillUnmount: function() {
    $('.content').unbind("scroll");
}

如果我想做一些更复杂的事情,比如理解视图中的哪个元素,并给它一个不同的类呢?

JQuery工具和ReactJS并不总是很好地结合在一起。如果操纵DOM,React的DOM虚拟表示形式将与实际DOM不同步。如果您正在做一些小事情,比如将类更改为fixed,那么这可能不会成为问题

如果您正在做一些更大的事情,比如了解视图中的元素,但不完全确定您所说的是什么,那么该元素可能应该是一个react组件


类名也可以在React中更改,这可以基于某种状态来完成。查看此工具,在react代码中执行类似操作:。

为什么不根据需要附加事件,然后调用setState重新渲染?你不应该需要jQuery来做这件事。我知道,这就是为什么我说这是一个简单的例子。如果我想做更多的事情,比如计算窗口大小和动态更改样式,该怎么办。或者了解列表中哪个元素位于我的滚动视图的顶部并高亮显示它,或者类似的事情。我还认为这个小的dom操作对于react来说成本太高,因为我为什么要构建整个树呢?比如说,我的组件是一个完整的页面,只需进行一个小的类更改……现在看来这似乎是过早的优化。您仍然可以使用DOM API。我同意您的看法,并且我知道在这个小示例中,我可以使用setState并相应地呈现类。但我不知道如何做一些更复杂的事情,比如在滚动时更改高亮显示的行,或者使用更多动画。