电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue父子組件傳值不能實時更新的解決方法

瀏覽:165日期:2022-06-09 18:09:42

最近做項目,遇到個大坑,這會爬出來了,寫個總結,避免下次掉坑。

vue父子組件傳值不能實時更新問題,父組件將值傳給了子組件,但子組件顯示的值還是原來的初始值,并沒有實時更新,為什么會出現這種問題呢?

出現這個問題,可能有以下兩個原因:

一、 父組件沒有把值傳過去,子組件沒有獲取到最新的值。

二、子組件接收到最新的值了,但是沒有實時渲染到視圖上。

如果是第一種情況很簡單,核對傳的參數,確保把最新的值傳過去就可以了。

若是第二種情況,稍微有些麻煩,但也可以解決,主要有兩種解決方案:

① 利用v-if的重新渲染機制,獲取到值之后,將子組件重新渲染一遍。

② 利用watch監聽數據,若是數據變化,調用視圖渲染方法。

下面,結合項目的實際情況,具體分析這兩種方法。

在項目中,將erchart中的生成儀表盤的數據封裝了一個子組件,父組件中傳給儀表盤一個初始值,后續,調用后臺接口返回最新的數據傳給這個儀表盤組件的之后,發現儀表盤中的數據并沒有實時的更新。儀表盤如下圖:

首先,利用第①種方法,利用v-if渲染機制

設置一個參數reRender。設置v-if=“reRender”,并將reRender初始值設置為false,從后臺獲取數據之后,將reRender=true。

這樣就能夠將最新的數據渲染到子組件的視圖中了。但這樣,如果我在同一個頁面中調用了很多次這個子組件,生成多個儀表盤,就需要設置很多個類似于reRender的屬性。

那么有的小可愛就提出來了,我設置一個reRender屬性,然后幾個子組件共用這個屬性不就可以了嗎,幾個后臺接口調完更新數據之后在統一將reRender=true。

這種方法,我嘗試過了,不可以,我不知道原因。

只有將reRender=true放在那個調接口的方法里,獲取到后臺數據之后,才可以。嘗試了網上提出的強制更新的方法,也不行。

所以,遇到這種一個頁面調用多個這種組件的情況,使用v-if就很繁瑣。

若是,別人封裝了這么一個組件,數據更新的時候還要利用v-if重新渲染一下,那就感覺這個組件可能封裝的不是太好,所以,咱們還是完善子組件。

這里就涉及到了第二種方法,設置watch監聽,監聽數據,當子組件監聽到數據發生改變時,調用方法。

監聽傳的數據,這里面用到了兩個屬性immediate和deep,在watch中,不會監聽初始值,只有當值改變時才會執行handler函數。但是,我們想要在最初賦值的時候,也執行handler函數,就需要用到immediate:true。而普通監聽只能監聽字符串、數字等值,要想監聽到對象中某個屬性的變化,就需要用到深度監聽deep:true

在這之后,我發現控制臺報錯了, ”TypeError: Cannot read property ‘getAttribute’ of undefined”,如下所示:

后面查了一些資料是因為:在vue中,數據和dom渲染是異步的,當dom還沒渲染,卻用數據去賦值的話,就會出現這個問題。解決方法是:利用this.$nextTick()。this.$nextTick()將數據渲染方法放到dom渲染之后,這樣就不會出現這個問題了。

依此,子組件數據就可以實時更新了。如下圖:

總結

到此這篇關于vue父子組件傳值不能實時更新的解決方法的文章就介紹到這了,更多相關vue父子組件傳值不實時更新內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: JavaScript
主站蜘蛛池模板: 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | 泰国专线_泰国物流专线_广州到泰国物流公司-泰廊曼国际 | 纸塑分离机-纸塑分离清洗机设备-压力筛-碎浆机厂家金双联环保 | 专业甜品培训学校_广东糖水培训_奶茶培训_特色小吃培训_广州烘趣甜品培训机构 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 小型单室真空包装机,食品单室真空包装机-百科 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 广州展览制作|展台制作工厂|展览设计制作|展览展示制作|搭建制作公司 | 保定市泰宏机械制造厂-河北铸件厂-铸造厂-铸件加工-河北大件加工 | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 818手游网_提供当下热门APP手游_最新手机游戏下载 | 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | 广西资质代办_建筑资质代办_南宁资质代办理_新办、增项、升级-正明集团 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 液晶拼接屏厂家_拼接屏品牌_拼接屏价格_监控大屏—北京维康 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 杜康白酒加盟_杜康酒代理_杜康酒招商加盟官网_杜康酒厂加盟总代理—杜康酒神全国运营中心 | 大型冰雕-景区冰雕展制作公司,3D创意设计源头厂家-[赛北冰雕] | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 常州翔天实验仪器厂-恒温振荡器-台式恒温振荡器-微量血液离心机 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 润滑油加盟_润滑油厂家_润滑油品牌-深圳市沃丹润滑科技有限公司 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 美国HASKEL增压泵-伊莱科elettrotec流量开关-上海方未机械设备有限公司 | 蒸压釜-陶粒板隔墙板蒸压釜-山东鑫泰鑫智能装备有限公司 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | POS机办理_个人pos机免费领取-银联pos机申请首页 |