computed與watch的愛恨情仇
阿新 • • 發佈:2021-11-29
0 緣起
今天做一個標籤切換功能的時候,測試跟我說這玩意切換後沒了。我一皺眉,怎麼可能,我自己也測試了,重新整理後還在啊。然後她跟我說,她是直接點了下拉框切換......
行吧,不就是BUG嘛嗯修就完事了,於是一上午過去了......
1 你說讓我愛你不容易
這個companyName原本有兩種途徑獲取,第一種是點選修改,路由query丟過來,boxId有值。第二種是點選新增,根據下拉框來得到,boxId為-1。現在麼,就是要根據boxId,來判斷我拿哪裡的值。
boxId是從VueX裡面取到的,所以我也想到把companyName扔進VueX裡面,一通操作OK了。
但是!欸,BUG總是如此多情,即使從VueX裡面取了這個正確的companyName,我顯示的還是空的(實際上的Undefined)。好,我來看看是computed的getter裡頭出了什麼問題,我一看,差點被氣的魂出竅,每次都拿第一位的undefined,怪不得不顯示呢。更改後,更666的情況冒出來了,computed出來的companyName確實對的,但是顯示不出來,欸,v-model又來折騰了!
2 擦肩而過,誰還記得
速度搜索了一下,果然,v-model和computed一起用會用某種奇怪的效應,就像你愛的那個人不愛你一樣,既真實又殘酷。所以,我最後還是採用最原始最樸實無華的使用方法,v-model+watch,雖然簡單,但很有效。愛你的那個人,可能你不愛她,但她真的很愛你。
流程大概是
cN進來,改值->watch到了,存vueX,改變其他的對應值。
重新整理介面,有沒有boxId,有拿vueX裡的cN,沒有就空著。
人生到處知何似,應似飛鴻踏雪泥。