鍍金池/ 問答/HTML/ 面試題,react和jquery操作dom的區(qū)別,為什么react框架里面不建議

面試題,react和jquery操作dom的區(qū)別,為什么react框架里面不建議使用jquery

react和jquery操作dom的區(qū)別,為什么react框架里面不建議使用jquery

回答
編輯回答
笨尐豬

操作dom成本太高性能也不好,所以才會有主流框架的虛擬dom,它不是操作dom,而是通過diff算法,先創(chuàng)建虛擬dom,然后當監(jiān)測到有數(shù)據(jù)變化的時候,執(zhí)行diff算法,以最小成本渲染dom
如果你想知道得更多,建議去深究一下虛擬dom以及diff算法。

2018年5月25日 14:39
編輯回答
近義詞

jQuery 是基于 Dom 的,React 為數(shù)據(jù)驅(qū)動:https://segmentfault.com/q/10...

2017年3月1日 09:03
編輯回答
短嘆

兩種前端框架的誕生年代不同。核心算法也不一樣。。jquery主張采用頻繁的操作dom。react。vue等框架采用的是虛擬dom。主要以數(shù)據(jù)來驅(qū)動。

2017年12月17日 22:39
編輯回答
無標題

因為react是虛擬dom而,jq是操作dom

2018年2月6日 08:19
編輯回答
涼汐

我就說兩點吧。

第一,思想不一樣。react是基于數(shù)據(jù)驅(qū)動的, 也就是說數(shù)據(jù)決定dom。 因此如果使用jquery的思想直接操作DOM的話,違背了這個思想。

第二,兩者共存可能會有意想不到的問題。 假定有這么一種場景:

react的A組件,

function A(props) {
    return <div><div id="jq">我會被jquery操作</div>{props.count}</div>
}

A組件props現(xiàn)在是{count: 1}, 然后你使用jq將id為jq的元素修改了。
然后props變?yōu)閧count: 2}, react重新渲染,你會發(fā)現(xiàn)id為jq的元素恢復到以前的狀態(tài)了。

解決方式拆一個jq組件出來,并使用shouldComponentUpdate 返回false, 將組件變成不會更新的組件

因此不建議在react等數(shù)據(jù)驅(qū)動的框架中做dom操作。

2017年6月15日 12:36
編輯回答
冷咖啡

用過react的基本上都不會用上jq。
之前有個面試官問:你用jq嗎?
我:我用react,不用jq。
面試官:怎么會有人不用jq。
我:我用react,不用jq。
面試官:好吧,今天就這樣了,你可以先走了。

2018年6月27日 02:00
編輯回答
雨萌萌

題主應該是剛開始入門react, react說白了不操作dom,改操作數(shù)據(jù)了(狀態(tài)),說白了react是通過操作數(shù)據(jù)(狀態(tài))來使頁面渲染的。

我們以前使用jquery操作dom,最多的操作就是給dom里塞入數(shù)據(jù)來達到局部刷新的效果,但是操作dom是很耗性能的。

2018年5月3日 03:35