項(xiàng)目中重度依賴(lài)vuex和watch,組件化非常方便,但是組件之間的數(shù)據(jù)、狀態(tài)共享一直非常難處理,所以在使用了vuex后便重度依賴(lài),并且大量使用了watch,在vue官網(wǎng)中一直不推薦使用watch,而是使用computed代替,但是現(xiàn)在也找不到一個(gè)合適的方法,下面用一個(gè)例子展示。a頁(yè)面和b頁(yè)面,b頁(yè)面中有5段文字,點(diǎn)擊文字后,a頁(yè)面的數(shù)據(jù)會(huì)加上選擇的數(shù)據(jù),一直累加。類(lèi)似現(xiàn)在的解決方法是,每次點(diǎn)擊文字,通過(guò)commit修改state的變量,a頁(yè)面使用watch監(jiān)聽(tīng)state變量的變化,如果改變則添加上新的數(shù)據(jù)。代碼使用了decorator和typescript//a頁(yè)面的監(jiān)聽(tīng)@Watch("content")
ChangeContent(x: string) { if (!x) return; this.text += this.content;
}//b頁(yè)面發(fā)送
ChooseText(x: string) { this.ChangeContent(x);
}//statecontent:null//mutationChangeContent(state,x){
state.content=x
}
其中代碼有部分省略,但是無(wú)關(guān)緊要。其中方法還有部分邏輯沒(méi)有寫(xiě),比如2次選中相同數(shù)字,watch是不會(huì)執(zhí)行?,F(xiàn)在想知道除了使用watch能監(jiān)聽(tīng)到變化,并執(zhí)行相應(yīng)邏輯,還有沒(méi)有其他的方法。例如computed。這只是其中的一小部分,以后碰到像是這樣的問(wèn)題,代碼的設(shè)計(jì)思路是什么。謝謝。
1 回答

千巷貓影
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
你這種需求,state
里存的應(yīng)該是個(gè)數(shù)組,里邊是被點(diǎn)擊的元素(這里就可以直接做去重了)。
然后就不需要 watch
了,因?yàn)?nbsp;state
里就是被點(diǎn)擊的所有元素,計(jì)算屬性中直接根據(jù)這個(gè)數(shù)組計(jì)算出文本返回即可。
添加回答
舉報(bào)
0/150
提交
取消