鍍金池/ 問答/HTML/ 為什么React中沒有類似于v-model和ng-model這樣的雙綁api?

為什么React中沒有類似于v-model和ng-model這樣的雙綁api?

我覺得單向數(shù)據(jù)流和針對表單的雙向數(shù)據(jù)綁定并不沖突啊,碰到復(fù)雜的表單,假如不借助第三方庫,就只能通過state加上事件監(jiān)聽處理,有點麻煩啊。。。

回答
編輯回答
命多硬

v-model是語法糖來的,你可以寫個高階組件來實現(xiàn)。react是單向數(shù)據(jù)流,這樣數(shù)據(jù)流向更可控、清晰,除此之外,那就是受控組件了

2018年4月14日 01:57
編輯回答
來守候

一般碰到這個問題我們都會說 React 的設(shè)計思想是單向數(shù)據(jù)流,我覺得可以這樣理解為什么沒有雙向數(shù)據(jù)綁定:

首先, React 是什么?純粹的 View 層; AngularJS 是什么? 一套完整的前端 JS 框架。
然后,對于 React 來說雙向數(shù)據(jù)綁定是什么需求? -- 明顯是業(yè)務(wù)需求。因為單向數(shù)據(jù)流已經(jīng)滿足了 View 層渲染的要求并且更易測試與控制(來自 Props 或 State),所以在純粹的 React 中怎么會需要雙向數(shù)據(jù)綁定這種功能呢。

如果需要解決雙向數(shù)據(jù)綁定問題,可以借助第三方庫如 Ant Design 的 rc-form 之類,你也可以存在 State 里甚至是 Redux 里,根據(jù)需求來吧。

所以 React 沒有雙向數(shù)據(jù)綁定不是功能的缺失或沖突問題,而是 React 只關(guān)注解決純粹的問題: View 層。套用張小龍的一句話:說明純粹也能成功 :)

2017年2月22日 01:43
編輯回答
熟稔

因為設(shè)計理念就是單向。
至于你說的表單。
如果有使用UI框架,例如ant-design就很方便了,你可以了解一下其中的表單組件具體的用法。
http://ant.design/components/...
如果不借助第三方庫,原生js在做表單提交的時候是可以根據(jù)name來獲取表單值的,應(yīng)該可以解決你的問題。

2017年5月8日 01:55