亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Vue的雙向綁定和單向數(shù)據(jù)流沖突嗎

 更新時間:2022年04月11日 09:41:54   作者:程序員江同學  
單項數(shù)據(jù)流和雙向數(shù)據(jù)綁定的概念,這兩種不是相互沖突的嗎?即然能用v-model雙向數(shù)據(jù)綁定,不應該就是雙向數(shù)據(jù)流了嗎?本文就詳細的介紹一下

前言

眾所周知,Vue中更加推薦單向數(shù)據(jù)流的狀態(tài)管理模式(比如Vuex),但Vue同時支持通過v-model實現(xiàn)雙向數(shù)據(jù)綁定。
那么問題來了,單項數(shù)據(jù)流和雙向數(shù)據(jù)綁定的概念,這兩種不是相互沖突的嗎?即然能用v-model雙向數(shù)據(jù)綁定,不應該就是雙向數(shù)據(jù)流了嗎?

本文主要包括以下內(nèi)容

  • 單向綁定 vs 雙向綁定
  • 單向數(shù)據(jù)流 vs 雙向數(shù)據(jù)流
  • 為什么說v-model只是語法糖

單向綁定 vs 雙向綁定

單雙向綁定,指的是View層和Model層之間的映射關(guān)系。
react采取單向綁定,如圖所示:

React中,當View層發(fā)生更改時,用戶通過發(fā)出Actions進行處理,Actions中通過setStateState進行更新,State更新后觸發(fā)View更新??梢钥闯?,View層不能直接修改State,必須要通過Actions來進行操作,這樣更加清晰可控

單向綁定的方式的優(yōu)點在于清晰可控,缺點則在于會有一些模板代碼,Vue則同時支持單向綁定和雙向綁定

  • 單向綁定:插值形式{{data}},v-bind也是單向綁定
  • 雙向綁定:表單的v-model,用戶對View層的更改會直接同步到Model

實際上v-model只是v-bind:valuev-on:input的語法糖,我們也可以采取類似react的單向綁定。兩者各有利弊,單向綁定清晰可控,但是模板代碼過多,雙向綁定可以簡化開發(fā),但是也會導致數(shù)據(jù)變化不透明,優(yōu)缺點共存,大家可以根據(jù)情況使用。

單向數(shù)據(jù)流 vs 雙向數(shù)據(jù)流

數(shù)據(jù)流指的是組件之間的數(shù)據(jù)流動。
VueReact都是單向數(shù)據(jù)流的模型,雖然vue有雙向綁定v-model,但是vuereact父子組件之間數(shù)據(jù)傳遞,仍然還是遵循單向數(shù)據(jù)流的,父組件可以向子組件傳遞props,但是子組件不能修改父組件傳遞來的props,子組件只能通過事件通知父組件進行數(shù)據(jù)更改,如圖所示:

通過單向數(shù)據(jù)流的模型,所有狀態(tài)的改變可記錄、可跟蹤,相比于雙向數(shù)據(jù)流可加容易維護與定位問題

為什么說v-model只是語法糖

你可以用 v-model 指令在表單 <input>、<textarea><select> 元素上創(chuàng)建雙向數(shù)據(jù)綁定。它會根據(jù)控件類型自動選取正確的方法來更新元素。盡管有些神奇,但 v-model 本質(zhì)上不過是語法糖。它負責監(jiān)聽用戶的輸入事件以更新數(shù)據(jù),并對一些極端場景進行一些特殊處理

正如上面所述,Vue文檔中說v-model只是語法糖

<input v-model=“phoneInfo.phone”/>

//在組件中使用時,實際相當于下面的簡寫
<input :value="PhoneInfo.phone" @input="val => { PhoneInfo.phone = val }"

那么問題來了,為什么說v-model不是真正的雙向數(shù)據(jù)流呢?按照這道理,是不是可以認為model->view的單向數(shù)據(jù)流也是語法糖啊,也是vue作者通過一定方法實現(xiàn)的而已
真正的原因上面已經(jīng)說了,數(shù)據(jù)綁定是ViewModel之間的映射關(guān)系,數(shù)據(jù)流指的是組件之間的數(shù)據(jù)流動v-model不是真正的雙向數(shù)據(jù)流,是因為它不能直接修改父組件的值,比如你在v-model中綁定props中的值是會報錯的,它只能綁定組件的值
而真正的雙向數(shù)據(jù)流,比如AngularJs,是允許在子組件中直接更新父組件的值的,這就是為什么說v-model只是語法糖的原因

總結(jié)

總得來說,單雙向數(shù)據(jù)綁定與數(shù)據(jù)流是兩個不同維度的概念,數(shù)據(jù)綁定是ViewModel之間的映射關(guān)系,數(shù)據(jù)流指的是組件之間的數(shù)據(jù)流動。因此,單向數(shù)據(jù)流也可有雙向綁定,雙向數(shù)據(jù)流也可以有雙向綁定,兩者不應該混為一談

參考資料

Vue的單向數(shù)據(jù)流和雙向數(shù)據(jù)綁定不是沖突的嗎?

Vue的雙向綁定和單向數(shù)據(jù)流

到此這篇關(guān)于淺談Vue的雙向綁定和單向數(shù)據(jù)流沖突嗎的文章就介紹到這了,更多相關(guān)Vue雙向綁定和單向數(shù)據(jù)流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3中provide和inject的使用

    vue3中provide和inject的使用

    provide和inject在Vue 2中已經(jīng)被廣泛應用,不是新鮮API,3.0重新認識一下它們兩個,本文重點給大家介紹vue3中provide和inject的使用,需要的朋友參考下吧
    2021-07-07
  • vue+springboot圖片上傳和顯示的示例代碼

    vue+springboot圖片上傳和顯示的示例代碼

    這篇文章主要介紹了vue+springboot圖片上傳和顯示的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 深入理解Vue-cli4路由配置

    深入理解Vue-cli4路由配置

    Vue-router是Vue官方的路由插件,本文將結(jié)合實例代碼,介紹Vue-cli4路由配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 圖文詳解Vue3沒有代碼提示問題的解決辦法

    圖文詳解Vue3沒有代碼提示問題的解決辦法

    最近在使用Vue.js時候沒有自動提示,就很難受,下面這篇文章主要給大家介紹了關(guān)于Vue3沒有代碼提示問題的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • Vue引入高德地圖實現(xiàn)流程分步講解

    Vue引入高德地圖實現(xiàn)流程分步講解

    這篇文章主要介紹了Vue引入高德地圖實現(xiàn)流程,實現(xiàn)步驟是通過vue的方法引入地圖,初始化地圖,設(shè)置寬和高,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-12-12
  • Vue2實時監(jiān)聽表單變化的示例講解

    Vue2實時監(jiān)聽表單變化的示例講解

    今天小編就為大家分享一篇Vue2實時監(jiān)聽表單變化的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Vue3 的ref和reactive的用法和區(qū)別示例解析

    Vue3 的ref和reactive的用法和區(qū)別示例解析

    ref和reactive是Vue3中用來實現(xiàn)數(shù)據(jù)響應式的API,一般情況下,ref定義基本數(shù)據(jù)類型,reactive定義引用數(shù)據(jù)類型,本文給大家介紹Vue3 的ref和reactive的用法和區(qū)別,感興趣的朋友一起看看吧
    2023-10-10
  • vue項目國際化vue-i18n的安裝使用教程

    vue項目國際化vue-i18n的安裝使用教程

    最近接觸學習Vue.js框架結(jié)合Element-ui組件開發(fā)項目。由于最近需要實現(xiàn)國際化功能,所以下面這篇文章主要介紹了vue項目國際化vue-i18n的使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2018-03-03
  • Vue源碼學習之響應式是如何實現(xiàn)的

    Vue源碼學習之響應式是如何實現(xiàn)的

    最近接觸了vue.js,一度非常好奇vue.js是如何監(jiān)測數(shù)據(jù)更新并且重新渲染頁面,這篇文章主要給大家介紹了關(guān)于Vue源碼學習之響應式是如何實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • vue發(fā)送驗證碼計時器防止刷新實現(xiàn)詳解

    vue發(fā)送驗證碼計時器防止刷新實現(xiàn)詳解

    這篇文章主要為大家介紹了vue發(fā)送驗證碼計時器防止刷新實現(xiàn)詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論