Vue.js 的 prop 如何實現雙向綁定

      網友投稿 990 2025-04-02

      最近遇到了一個問題,就是 Vue.js 中的 prop 如何實現雙向綁定比較好。


      Vue.js 的 prop 如何實現雙向綁定

      之前我都是把 prop 傳遞到子組件,然后子組件里面直接把 prop 直接改了,這樣雖然能把結果反映到父組件,但并不是一個很好的解決方案

      比如我就經常遇到這樣的 Warning:

      Avoid mutating a prop directly since the value will be overwritten…

      實際上,用事件傳遞的方式把修改從子組件傳到父組件是比較不錯的方式,這就需要子組件 $emit 一個事件,然后父組件監聽這個事件,然后將接收到的值修改就好了。

      官方文檔的說明如下:

      在有些情況下,我們可能需要對一個 prop 進行 “雙向綁定”。不幸的是,真正的雙向綁定會帶來維護上的問題,因為子組件可以變更父組件,且在父組件和子組件都沒有明顯的變更來源。

      這也是為什么我們推薦以 update:myPropName 的模式觸發事件取而代之。舉個例子,在一個包含 title prop 的假設的組件中,我們可以用以下方法表達對其賦新值的意圖:

      1

      this.$emit('update:title', newTitle)

      所以這里推薦的就是使用 update:propName 來實現。

      這樣的話,父組件原生的寫法如下:

      1

      2

      3

      4

      v-bind:title="doc.title"

      v-on:update:title="doc.title = $event"

      >

      這里 prop 的名字叫做 title,子組件需要接收到這個值,然后各種操作進行修改都沒關系。

      比如子組件可以這么寫:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      這樣當 titleData 更新的時候,父組件的 title 就更新了。

      這時候父組件可以簡寫為:

      1

      注意帶有 .sync 修飾符的 v-bind 不能和表達式一起使用 (例如 v-bind:title.sync=”doc.title + ‘!’” 是無效的)。取而代之的是,你只能提供你想要綁定的 property 名,類似 v-model。

      另外當我們用一個對象同時設置多個 prop 的時候,也可以將這個 .sync 修飾符和 v-bind 配合使用:

      1

      這樣會把 doc 對象中的每一個 property (如 title) 都作為一個獨立的 prop 傳進去,然后各自添加用于更新的 v-on -。

      將 v-bind.sync 用在一個字面量的對象上,例如 v-bind.sync=”{ title: doc.title }”,是無法正常工作的,因為在解析一個像這樣的復雜表達式的時候,有很多邊緣情況需要考慮。

      以上,完畢。

      javaScript Vue

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:WPS文檔怎么轉換趁PDF文檔不讓復制?
      下一篇:excel中向上取整的方法
      相關文章
      亚洲香蕉久久一区二区 | 亚洲AV中文无码乱人伦| 亚洲成人黄色网址| 亚洲综合激情另类小说区| 亚洲国产成人一区二区精品区| 亚洲熟妇丰满多毛XXXX| 亚洲精品制服丝袜四区| 中文字幕一精品亚洲无线一区| 亚洲一区无码中文字幕| 亚洲国产精品乱码一区二区| 亚洲欧洲国产精品香蕉网| 亚洲精品国产精品乱码不卡√| 国产亚洲一区二区手机在线观看| 亚洲综合伊人久久综合| 亚洲精品一品区二品区三品区| 久久精品夜色国产亚洲av| 久久久久亚洲AV成人无码网站 | 亚洲精华国产精华精华液网站| 亚洲丰满熟女一区二区哦| 国产精品亚洲一区二区三区久久 | 亚洲成人一区二区| 久久精品国产精品亚洲下载 | 亚洲三级在线观看| 亚洲欧美aⅴ在线资源| 国产精品亚洲五月天高清| 亚洲国产午夜福利在线播放| 三上悠亚亚洲一区高清| 久久精品国产亚洲av麻| 亚洲成a人片在线观看播放| 亚洲av永久无码嘿嘿嘿 | 亚洲成AV人片高潮喷水| 国产亚洲精品美女久久久久久下载| 亚洲国产成人影院播放| 国产亚洲人成网站观看| 77777_亚洲午夜久久多人| 亚洲一本之道高清乱码| 亚洲变态另类一区二区三区| 亚洲日韩在线观看| 亚洲va久久久噜噜噜久久| 亚洲综合婷婷久久| 亚洲精品第一综合99久久|