鍍金池/ 問答/HTML/ watch 有時候會監(jiān)聽不到

watch 有時候會監(jiān)聽不到

因為公司不能帶源碼出來,所以這里就用文字描述這個問題了;
在父組件里,有上下兩個子組件,上面的子組件是搜索欄,下面的組件是ehcart圖表,用戶選完搜索項后點擊搜索向后臺請求數(shù)據(jù),用watch監(jiān)聽請求回來的數(shù)據(jù),一旦有數(shù)據(jù)返回,立馬存入vuex的state中;下面的echart組件同時也監(jiān)聽這個state,一旦數(shù)據(jù)發(fā)生變化,就調用我封裝的echart函數(shù),將數(shù)據(jù)渲染出來,有幾個頁面都用到了這兩個組件,而且頁面都是一模一樣,只是接口不同,返回的數(shù)據(jù)不同;
問題就來了,在其他頁面都是好好地,但是其中的某一個頁面的watch監(jiān)聽事件沒有觸發(fā),我用vue的調試工具發(fā)現(xiàn)vuex中的數(shù)據(jù)明明改變了,但是卻并沒有觸發(fā)watch事件,如果連續(xù)在這幾個并列的頁面中來回切換,這個watch事件就會偶然觸發(fā)一兩次,刷新頁面也可以觸發(fā);
百度后發(fā)現(xiàn)要用watch監(jiān)聽數(shù)組要用深度監(jiān)聽,不然沒有效果,但是我其他頁面返回的數(shù)據(jù)也是數(shù)組啊,只是字段名稱不一樣而已,不知道為什么會出現(xiàn)這樣的問題

回答
編輯回答
墻頭草

我也碰到過這樣的問題,最后改用事件總線eventBus實現(xiàn)

2018年9月23日 06:33