網(wǎng)站首頁 編程語言 正文
1.Vue的單項數(shù)據(jù)流:指數(shù)據(jù)一般從父組件傳到子組件,子組件沒有權利直接修改
父組件傳來的數(shù)據(jù),即子組件從props中直接獲取的數(shù)據(jù),只能請求父組件修改數(shù)據(jù)
再傳給子組件。父組件屬性值的更新會下行流動到子組件中。
2.為什么不能子組件直接修改父組傳來的值呢?父組件的值可能會不斷發(fā)生變化,那么
如果我們子組件對父組件傳來的值比如props有一個number,子組件收到了number=1,
在收到后,子組件直接改變number的值為5,去做些事情,但還未做時父組件數(shù)據(jù)更新了,
傳過來一個值3,也就是說子組件剛將其變?yōu)?,父組件又把它變成了3,可能影響子組件的使用。
說的官方一些,就是父組件的值更新時,子組件中props的值也會發(fā)生更新。
3.在組件中直接用v-model綁定父組件傳過來的數(shù)據(jù)是不合理的,如果希望修改父組件傳給子組件的值:
(1)在子組件data中創(chuàng)建一個變量獲取props中的值,在取改變這個data中的值
(2)子組件使用$emit發(fā)出一個事件,讓父組件去修改這個值。
一.如果是簡單數(shù)據(jù)類型
傳過去的值相當于拷貝的一份副本,修改子組件的內容并不會影響到父組件,但是直接修改會發(fā)生
警告,上述已經(jīng)參闡述過了,同樣通過代碼來進行驗證。
APP.Vue
我是父組件的{{ number }}
子組件
我是子組件的{{ data }}
view:
?點擊子組件修改并沒有修改父組件的數(shù)據(jù),相當于一個深拷貝,但是任然會有弊端:
?vue不建議這種寫法。
為什么會出現(xiàn)警告呢?
假設子組件需要的值是父組件傳遞的5
子組件還沒做任何操作時
父組件將5更新成了3
可能影響到子組件的使用
說的官方一些,就是父組件的值更新時,子組件中props的值也會發(fā)生更新。
正確的修改方式:
我是子組件的{{ newdata }}
二..如果是引用數(shù)據(jù)類型
說明:引用的數(shù)據(jù)類型傳過去的是一個地址
父組件:
我是父組件的{{ arr }}
子組件:
我是子組件的{{ data }}
view圖:
解決方法:
子組件
我是子組件的{{ newdata }}
?
解析:利用es6的擴展運算符,拷貝出一個新的地址,使兩者不產生聯(lián)系。
同理對象也是一樣的。
父組件代碼:
我是父組件的{{ obj }}
子組件:
我是子組件的{{ newobj }}
view:
?解析: 同樣通過擴展運算符來產生一個新的對象,讓兩者互相不干擾。
三.總結
父傳子的過程中
簡單的數(shù)據(jù)類型是可以修改的,但是最好不要直接進行修改,因為會影響到子組件里面的數(shù)據(jù)。 需要在重新定義個變量并且賦值。
復雜的數(shù)據(jù)類型, 不能直接進行修改,因為用的是同一個地址。需要重新產生一個新的對象。
可以使用es6的擴展運算符來解決問題。
原文鏈接:https://blog.csdn.net/qq_59076775/article/details/124252940
- 上一篇:開發(fā)跨域問題的解決
- 下一篇:使用node讀取文件和寫入文件
相關推薦
- 2022-06-25 基于Python實現(xiàn)五子棋游戲_python
- 2022-12-01 .NET?Core部署為Windows服務的詳細步驟_實用技巧
- 2022-02-27 記錄npm 在windows下cmd中報錯以及idea下terminal安裝依賴時同樣報錯
- 2022-09-02 Python中的Numpy?面向數(shù)組編程常見操作_python
- 2022-11-04 react-router-dom?v6?使用詳細示例_React
- 2022-01-20 簡易登錄表單的制作,包括用戶名、密碼、隨機驗證碼(代碼完整,復制即用)
- 2023-12-14 【datetime模塊】將時間加一秒或者減一秒
- 2022-09-06 python使用seaborn繪圖直方圖displot,密度圖,散點圖_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支