React中的virtual dom是否可以理解為當前組件的view model?
01-05
不是
vdom 就是 React 自己實現的偽 DOM API,React.createElement() 啥的,又稱為 React Element ,一般用來描述 React Component 的 view 結構。
React Element 是相當 dump 的 view,沒法認為是 view model。
React Component 有狀態,有邏輯,在某種程度上,React Component 你確實可以把它理解為 view model。
但 React 這一套東西只是用來做 view 而已,你可以把 react component 當作 dump view 用(比如說長列表/無限滾動),也可以當作 view model 用,甚至想怎麼用就怎麼用。比如說, redux router 裡面有 history 有 provider 有 route ,你管這些叫做 view model 么,也挺彆扭的。
所以說, React 是很自由的,有沒有 view model,取決於你怎麼用。我有時就把它當作 HTML 用,用來做傳統 webpage ,作死了一點,overkill 了一點,但沒準業務有變呢?
實際上,我認為 React 最重要的東西,就是 component lifecycle 、 component dependency、 view update ,它替你管理這個,其他的它不太關心。
https://facebook.github.io/react/docs/glossary.html題主是想說vdom就是mvvm中的vm吧?這個個人覺得也差不多對。mvvm中的viewmodel是一個binder,綁住了數據結構和dom,而react中的虛擬dom是臉書一個比較好的用js來映射dom的map,虛擬dom三個參數type,props,children可以包容這個binder的相關信息了。但是,說vdom可以代表vm也不完全正確。虛擬dom在react中是很靜態的,只是react提供的vm解決方案的一部分,另一部分dom diff和事件代理映射池也應該算是model的一部分。所以個人覺得react中的虛擬dom只是vm的子集,不能說對等
推薦閱讀: