我有新的反应,我得知知道操纵由Jquery做出反应组成的dom是一个非常糟糕的主意。但是,通过与Jquery做出反应来操作dom组件上的样式是一个坏主意吗?
ReactDom.render( <LoginPage/>, document.getElementById('root') );
//after render call activateJQ();
var activateJQ = function(){
$('button').animate({
backgroundColor: "#aa0000",
color: "#fff",
width: 500
}, 1000 );
$('.error-msg').css("color","red");
};
它适用于此页面,但我想将其合并到更复杂的页面中,这些页面会更改状态并重新呈现。如何使用添加的样式对地址组件做出反应?
答案 0 :(得分:2)
答案简短:是的,你可以。但这是一个非常糟糕的主意,如果你这样做,你会后悔的。
在您的特定示例中,使用jQuery应用样式(颜色或错误消息)和动画样式(背景颜色等按钮)不会破坏任何内容。
也就是说,使用react来应用样式有一些特定的优点:你被迫应用样式(在你分配给你的组件的css类中)和动画(在componentDidMount()
或使用<ReactCSSTransitionGroup>
)在组件生命周期的恰当时刻。这使您的代码更容易调试:如果您的样式中断,您可以在正确的位置找到所有可疑代码。
请记住:react是一个动态引擎,可以根据用户操作更改DOM的结构。而且你的css样式与你的DOM结构紧密相关,所以你希望它们同步(并因此在代码中的相同位置进行管理)。
在您的具体情况下,我至少可以想到您的react + jQuery设置出现故障的一个场景:
ReactDOM.render()
运行,并启动反应引擎或者,如果您在每个activateJQ()
之后致电render()
:
随着应用程序的增长,你会发现混合反应和jQuery来管理DOM和样式(它们是相互依赖的)会变得难以管理。