Javascript 我应该如何处理reactJS dom操纵(例如滚动操纵)
假设我想做一些非常简单的事情——在一个卷轴上将标题更改为fixed,直接操作dom可以吗?如果不是的话,我应该如何攻击它 例如:Javascript 我应该如何处理reactJS dom操纵(例如滚动操纵),javascript,reactjs,Javascript,Reactjs,假设我想做一些非常简单的事情——在一个卷轴上将标题更改为fixed,直接操作dom可以吗?如果不是的话,我应该如何攻击它 例如: componentDidMount: function() { $('.content').bind('scroll',function(){ if ( $(this).scrollTop() > 85) { $('#x').addClass('fixedTitle'); } else {
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并相应地呈现类。但我不知道如何做一些更复杂的事情,比如在滚动时更改高亮显示的行,或者使用更多动画。